class Adder:
def __call__(self, x, y):
return x + y
add1 = Adder()
def add2(x, y):
return x + y
add1
和add2
类型之间有什么区别?
在您的超简单示例中。没有实际的区别,因为函数也是可调用的对象。
但是,可调用对象是您编写的类的对象,因此您可以编写以下代码:
class Counter:
def __init__(self, value = 0):
self.n = 0
def __call__(self):
self.n += 1
return self.n
def __repr__(self):
return str(self.n)
redWins = Counter()
blueWins = Counter()
if foo():
redWins()
else:
blueWins()
print("Red has won {} times.\nBlue has won {} times."
.format(redWins, blueWins))
而且您会发现仅使用函数来实现这样的类很困难。即使您尝试使用全局变量来做,也不能拥有一个全局变量的单独实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句