python对象之__call__方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python对象之__call__方法相关的知识,希望对你有一定的参考价值。

先看示例,然后啥都明白了

class Student():
    def __call__(self, *args, **kwargs):
        print(__call__方法被调用, *args)

class Person():
    def mm(self):
        print(mm方法被调用)

测试代码 :

from test.student import Student, Person

if __name__ == __main__:
    student =Student()
    student(ni nai nai de )

    print(**40)
    person = Person()
    person()

打印结果:

C:UserszhengqinfengAppDataLocalProgramsPythonPython37python.exe E:/ws/python/LearnFlask/test/xx.py
Traceback (most recent call last):
__call__方法被调用 ni nai nai de 
  File "E:/ws/python/LearnFlask/test/xx.py", line 9, in <module>
****************************************
    person()
TypeError: Person object is not callable

Process finished with exit code 1

 

结论: Student对象的正常调用,而Person调用报错,一切都是因为__call__方法,  它就是对象的回调方法。。。。

 

 

 

以上是关于python对象之__call__方法的主要内容,如果未能解决你的问题,请参考以下文章

python 的__call_方法

python中__call__方法解析

8.python之面相对象part.6(反射&__call__,__setattr__,__delattr__,__getattr__)

python 之简单聊聊 析构函数和特殊的__call__方法

面向对象之内置方法

python (__call__)详解