我想为现有的类D
实例创建委托人A
。可以在@property
中模拟方法调用和对A
的{{1}}属性访问:
D
虽然可以委派给class D(object):
def __init__(self, instance_of_A):
self.instance_of_A = instance_of_A
def __getattr__(self, attr):
...
def attr_wrapper(*args, **kwargs):
print('accessing attribute', attr)
res = getattr(self.instance_of_A, attr)(*args, **kwargs)
...
return res
return attr_wrapper
的方法调用,但该方法不起作用
A
的{{1}}个属性。使其运作的最佳方法是什么?
需要说明的是,如果@property
具有@property属性,则此方法无效:
A
返回A
很重要,因为我想拦截返回
值那个呼叫。