__call__ 方法的用途
Python 中 __call__ 方法的作用是什么?如何让一个类的实例像函数一样调用?
回答
孤独的心
__call__ 使对象可调用(callable),可以用 obj() 语法执行。
class Multiplier:
def __init__(self, factor):
self.factor = factor
def __call__(self, x):
return x * self.factor
double = Multiplier(2)
triple = Multiplier(3)
print(double(5)) # 10
print(triple(5)) # 15
使用场景:
- 带状态的可调用对象(比 lambda/clojure 更强大)
- 装饰器类
- 策略模式、回调函数
- 函数工厂
callable(obj) 检查对象是否可调用。