CodeWalk

__call__ 方法的用途

作者:孤独的心 · 2026-05-30 12:55

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

使用场景

  1. 带状态的可调用对象(比 lambda/clojure 更强大)
  2. 装饰器类
  3. 策略模式、回调函数
  4. 函数工厂

callable(obj) 检查对象是否可调用。