我想创建一个类,它将成为另一个类的包装器,并维护有关包装类执行的信息。例如,我想监视调用包装类中每个方法的次数。但是我希望包装器感觉就像被包装的类一样。
要做到这一点,我希望行wrapper.foo(arg1="value1", arg2="value2")
将调用:
def execute(self, function_name, args):
# function_name = "foo"
# args = {"arg1": "value1", "arg2": "value2"}
self.call_counter[function_name] += 1
return getattr(self.wrapped_class, function_name)(**args)
我希望以某种方式__getattr__
能够正常工作,但如果我想传递参数,那也无法发挥作用。
如何实现透明的包装效果?