我想为另一个类的方法添加一些额外的功能(或多或少地记录),但是需要注意的是,我无法对它们进行子类化,因为我无法控制原始类的实例化,但我可以转发具有相同鸭子类型的对象。换句话说,我想在前面加上一些代码的一些方法,同时转发一切原来的类的实例。
这是什么,我试图完成会像下面这样一个例子:
class A(object):
def __init__(self, wrapped):
self._wrapped = wrapped
def __getattr__(self, name):
return getattr(self._wrapped, name)
class B(object):
def foo(self):
print("foo")
@classmethod
def bar():
print("bar")
b = B()
a = A(b)
a.foo() # prints "foo"
a.bar() # Fails (tries to pass the self parameter to bar())
除了上面的方法对于类方法失败之外,因此在我的情况下不会这样做。有没有一种办法的方式,也可以与类方法和静态方法转移呼叫这样?