解释__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 Test():
def __init__(self,a,b):
print("..init...开始了")
self.a=a
self.b=b
print("__init__%s|||%s"%(self.a,self.b))
print("这是init方法执行完了")
def __call__(self, a, b):
print("===")
self.a=a
self.b=b
print("__call__with({},{})".format(self.a,self.b))
# 此外注意,在python中, 通过%进行字符串格式化会被淘汰,建议改成使用str.format方式进行字符串格式化
#实例化这个类
test=Test(7,8) #__init__7|||8
#通过_call_()来修改类属性值
test(4,5) # 将实例x看做了一个函数 #__call__with(4,5)
标签:__,python,self,init,实例,call,print
From: https://www.cnblogs.com/xinxuann/p/17040969.html