通过__call__()实现可调用对象
可调用对象, 实现了__call__()的类的实例对象, 可以直接通过obj()像调用函数一样调用对象.主要用于简化代码.
应用:
<1>只有一个实例方法, 或者只有一个核心方法的时候省略方法名, 简化调用
DEMO
class AA():
def __call__(self):
print("这里是aa的唯一方法")
aa = AA()
aa()
<2>统一实例方法和函数的调用方式, 试想一下如果AA和BB中的方法名不是双下call, func中的逻辑会不会啰嗦很多
DEMO
class AA():
def __call__(self):
print("这里是aa的执行结果")
class BB():
def __call__(self):
print("这里是bb的执行结果")
def cc():
print("这里是cc的执行结果")
aa = AA()
bb = BB()
def func(arg):
"""
执行arg对应的函数或对象中的方法
:param arg: 函数或对象名, str类型
"""
globals()[arg]()
if __name__ == '__main__':
func("aa")
func("bb")
func("cc")