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__方法的主要内容,如果未能解决你的问题,请参考以下文章
8.python之面相对象part.6(反射&__call__,__setattr__,__delattr__,__getattr__)