__getattr__与__call__的联合使用
2018-07-05 本文已影响0人
MononokeHime
__getattr__
可以定义那些访问对象没有的属性时候该做如何处理,但是如果访问对象没有的函数时该如何处理呢?
class Foo(object):
def __getattr__(self, item):
print(item)
return Foo()
def __call__(self, *args, **kwargs):
print(args)
print(kwargs)
return 10
foo=Foo()
print(foo.a(10,m=20)) # 看上去是调用函数a(),其实是通过__call__来让对象像函数一样调用
输出
a
(10,)
{'m': 20}
10