调用类对象
要想达到调用函数一样调用类对象,应得在类中实现__call__方法。这类可以当作函数来调用的对象,称为可调用对象。
#!/usr/bin/env python
# coding: utf-8
# Create by Andy963 @2020-07-12 13:37:23
class A:
def go(self):
return object()
class B:
def run(self):
return object()
def func():
return object()
def main(params:
params()
# a.go
# b.run
# fun()
pass
#在上面的情况中,如果是传入的A的对象,在main中我得调用a.go方法,而如果是B的对象,则需要调用run方法,对于不同的类,要调用不同的方法,显示在main函数中我们
#无法知道这个具体方法,而__call__方法让这一切成为可能。只要类实现了__call__方法。
class Person:
def __init__(self,name):
self.name = name
def __call__(self):
print(self.name,'hello,world')
if __name__ == '__main__':
andy = Person('andy')
andy() # 可调用对象
#因为实现了__call__方法,我只需要调用类对象(就像调用函数一样)