在Python面向对象编程中,__call__
方法允许一个类的实例像函数一样被调用。
当一个类定义了__call__
方法后,该类的实例就成为了可调用对象(callable)。这意味着你可以像调用函数那样使用类的实例,即在实例后面加上括号()
来执行。这种机制通常用于那些需要以类似函数的方式调用的对象,比如某些特定的设计模式中的类。
下面看一个例子:
class A(object):
def __init__(self, name):
self.name = name
# call方法
def __call__(self, *args, **kwargs):
print('__call__被调用了')
# 自定义函数
def my_func(self):
print('my_func被调用了')
# 创建A类 并实例化对象a
a = A('lyj')
# 自定义函数
a.my_func() # my_func被调用了
# call方法
a() # __call__被调用了
需要注意的是:只有当类定义了__call__
方法时,实例才能像函数一样被调用。如果没有定义__call__
方法,则无法通过实例加括号的方式直接调用实例的方法或属性