解释__call__ 方法是 Python 中类的特殊方法,当一个类的实例被“调用”时,就会自动触发这个方法。“调用”一个类的实例就是使用小括号 () 操作符。
举个例子:
class Adder:
def __init__(self, value=0):
self.data = value
def __call__(self, x):
return self.data + x
add = Adder()
print(add(1)) # 1
print(add(2)) # 2
上面这个类 Adder 有一个__call__ 方法,该方法接收一个参数x,并返回data + x 的值。我们可以通过实例来进行调用,就像函数调用一样,如上面代码中的add(1) 和add(2),他会自动调用__call__方法,并返回结果。
使用__call__ 方法可以使一个类的实例具有“函数”的行为。在一些情况下这可以更方便地实现一些功能。
还需要注意的是,与 init 方法一样, __call__方法的名字也是固定的,不能随意更改。
总结
总之,使用 call 方法可以使类的实例具有可调用的特性,使得类的实例可以像函数一样被调用,这能带来很多便利和可能性,增加程序的灵活性和可扩展性。
再附带一个程序,更能看懂
class Adder:
def __init__(self, value=0):
self.data = value
print("data in init is:{}".format(self.data))
def __call__(self, x,y):
print("In call,x is {},y is {}".format(x,y))
return self.data + x+y
add = Adder()
print(add(1,3))
print(add(2,4))
运行结果
data in init is:0
In call,x is 1,y is 3
4
In call,x is 2,y is 4
6
__init__是在创建对象的时候用,__call__在对象创建之后更改属性值