您正在捕获所有分配,这阻止了构造函数分配self.value
。您可以使用self.__dict__
访问实例字典。尝试:
class Wrapper:
def __init__(self, value):
self.__dict__['value'] = value
def __setattr__(self, name, value):
setattr(self.value, name, value)
另一种使用方式object.__setattr__
:
class Wrapper(object):
def __init__(self, value):
object.__setattr__(self, 'value', value)
def __setattr__(self, name, value):
setattr(self.value, name, value)