ラップされたオブジェクトとまったく同じように動作するラッパー クラスを作成したいと考えています (いくつかの特定の例外があります)。私が現在抱えている問題は、組み込み関数にあります。組み込み関数をラップされたオブジェクトにリダイレクトするにはどうすればよいですか?
class Wrapper:
def __init__(self, wrapped):
object.__setattr__(self, '_wrapped', wrapped)
def __getattr__(self, name):
return getattr(object.__getattribute__(self, '_wrapped'), name)
class Foo:
def __init__(self, val):
self.val = val
def __abs__(self):
return abs(self.val)
foo = Wrapper(Foo(-1))
print(foo.val) # Okay
print(abs(foo)) # TypeError: bad operand type for abs(): 'Wrapper'