首页 > 技术文章 > 面向对象高阶-07\_\_call\_\_

suren-apan 2019-09-21 10:56 原文

__call__

对象后面加括号时,触发执行。

注:

  • 构造方法的执行是由创建对象触发的,即:对象 = 类名() ;
  • 而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()()

列子---> 和 __init__ 结合着看

class Foo:
    # 这边 创建实例时候回触发 __init__    
    def __init__(self):
        print('__init__触发了')

    def __call__(self, *args, **kwargs):

        print('__call__触发了')


obj = Foo()  # 执行 __init__
# 输出结果
# __init__触发了

obj()  # 执行 __call__
# 输出结果
# __call__

推荐阅读