__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
上一篇 下一篇

猜你喜欢

热点阅读