八. __call__

八. __call__

  • 触发条件 : [对象] + ( ) 就触发 __call__ 的执行
class Person:
    def __init__(self,name):
        self.name = name

    def __call__(self, *args, **kwargs):
        print(args)
        print(kwargs)
        print(self.name + "触发了__call__")

P1 = Person("派大星")
P1()  
# ()
# {}
# 派大星触发了__call__

P1(1,2,3,4,name="shawn")
# (1, 2, 3, 4)
# {'name': 'shawn'}
# 派大星触发了__call__

一切皆对象, Person类也是一个对象, Persion+( ) 触发的是生成Persion类的类里的__call__

而Persion类生成的对象+( ) 触发的才是Persion类的__call__

posted @ 2021-01-05 22:16  给你骨质唱疏松  阅读(82)  评论(0编辑  收藏  举报