类中的__call__()

class A:
    def __call__(self, *args, **kwargs):
        print('执行了call方法')
    def call(self):
        print('执行call方法')
class B:
    def __init__(self,cls):
        print('在实例化A之前做一些事情')
        self.a=cls()
        self.a()
        print('在实例化A之后做一些事情')
a=A()
a()#对象()相当于调用__call__方法
#A()() 类名()(),相当于先实例化得到一个对象,对象() 和上面的结果一样。相当于调用__call__()方法
B(A)#把A传给cls A实例化后的对象赋值给属性a self.a()相当于调用__call__()方法

 

posted on 2018-11-04 09:34  有钱淫  阅读(491)  评论(0编辑  收藏  举报