说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
当一个类定义了 __call__()
方法时,它实际上让这个类的实例对象变得"可调用",就像调用函数一样。这种特性可以为类实例对象赋予函数的行为,使得这些对象能够接收参数,并返回某种结果。
object.__call__(self[, args...])
此方法会在实例作为一个函数被“调用”时被调用;如果定义了此方法,则 x(arg1, arg2, ...)
就大致可以被改写为 type(x).__call__(x, arg1, ...)
。
示例:
class Multiplier:
def __init__(self, factor):
self.factor = factor
def __call__(self, x):
return self.factor * x
# 创建一个实例对象
double = Multiplier(2)
# 调用实例对象,实际上调用了 __call__ 方法
result = double(5)
print(result) # 输出 10
在这个示例中,Multiplier 类定义了 __call__()
方法,这使得 Multiplier 的实例对象 double 可以像函数一样被调用。当我们调用 double(5) 时,实际上是调用了 double.__call__(5)
,这会返回 5 的两倍,即 10。
__call__()
方法的使用场景包括但不限于:
__call__()
方法来实现。__call__()
方法可以方便地实现装饰器。__call__()
方法来实现。总之,__call__()
方法为类实例对象赋予了类似函数的行为,从而增加了 Python 中面向对象编程的灵活性和表现力。
https://docs.python.org/zh-cn/3/reference/datamodel.html#object.__call__
更新时间:2024-03-04 12:57:02 标签:python 特殊方法 可调用对象