python 关于类的__call__(self,...)的使用

一个没有__call__(self,…)的类,一个有__call__(self,…)的类

class Name(object):
	def __init__(self,name1,name2,name3):
		self._name1 = name1
		self._name2 = name2
		self._name3 = name3

	def set_name(self,name1_changed,name2_changed,name3_changed):
		self._name1 = name1_changed
		self._name2 = name2_changed
		self._name3 = name3_changed


class Name2(object):
	def __init__(self,name1,name2,name3):
		self._name1 = name1
		self._name2 = name2
		self._name3 = name3

	def __call__(self,name1_changed,name2_changed,name3_changed):
		self._name1 = name1_changed
		self._name2 = name2_changed
		self._name3 = name3_changed

没有__call__()的情况 即class Name

python 关于类的__call__(self,...)的使用_第1张图片

== name(‘name1_changed2’,‘name2_changed2’,‘name3_changed’)不能使用==

有__call__()的情况

python 关于类的__call__(self,...)的使用_第2张图片
name(‘name1_changed2’,‘name2_changed2’,‘name3_changed’)可以使用

参照网上的说法是:定义类型的时候,实现__call__函数,这个类型就可以成为可调用的。换句话说,我们可以把这个类型的对象当做函数来使用,相当于重载了括号运算符。

你可能感兴趣的:(python,Pytorch,#,tensorflow)