__call__的使用

__call__的使用

原创

淘小欣 ©著作权

文章标签 Python Python教程 Python开发 文章分类 Python 后端开发

©著作权归作者所有:来自51CTO博客作者淘小欣的原创作品,请联系作者获取转载授权,否则将追究法律责任
__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__的执行,里面有什么,就会执行什么
    '''输出内容 
    ()
    {}
    淘小欣触发了__call__
    '''
    ​
    ​
    p1(2,3,4,5,5,name="吉吉")
    '''输出内容
    (2, 3, 4, 5, 5)
    {'name': '吉吉'}
    淘小欣触发了__call__
    '''# 2 一切皆对象
    # Person 类,也是一个对象   Person()----->触发生成Person类的类的__call__,不是触发Person的__call__
    # Person类生成的对象 --->p1()--->触发Person的__call__
    

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

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

  • __call__的应用:flask源码中使用了它

  • 收藏
  • 评论
  • 举报
提问和评论都可以,用心的回复会被更多人看到 评论
发布评论
相关文章

举报文章

请选择举报类型

内容侵权 涉嫌营销 内容抄袭 违法信息 其他

具体原因

包含不真实信息 涉及个人隐私

补充说明

0/200

上传截图

格式支持JPEG/PNG/JPG,图片不超过1.9M

已经收到您得举报信息,我们会尽快审核