我已经编写了以下包装类.我想定义__setattr__,以便它将所有属性重定向到包装类.但是,这会阻止我初始化包装器类.有什么好办法解决这个问题吗?

class Wrapper:
    def __init__(self, value):
        # How to use the default '__setattr__' inside '__init__'?
        self.value = value

    def __setattr__(self, name, value):
        setattr(self.value, name, value)

推荐答案

您正在捕获所有赋值,这会阻止构造函数赋值self.value.可以使用self.__dict__访问实例字典.try :

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)

Python-3.x相关问答推荐

Gekko优化超出了方程式的界限(由于某种原因,会产生变量)

Python将类实例变量转换为嵌套 struct

新行是pandas数据帧中旧行的组合

如何使用正则表达式通过反向搜索从链接中获取特定文本

删除浮点型数据集中每列重复值比例超过一定阈值的列

Python 舍入数字不准确

如何使用Selenium从网站下拉菜单中获取值列表?

调用 Clear 时 Airflow 会加载新代码吗

python2和python3中的列表生成器

Python - 使用 OpenCV 将字节图像转换为 NumPy 数组

如何从左到右解包元组?

Python 3x 的最佳机器学习包?

python - 错误 R10(启动超时)-> Web 进程未能在启动后 60 秒内绑定到 $PORT

如何使 Python3 成为 Geany 中的默认 Python

Python中的依赖倒置

使用 Python3 与 HDFS 交互的最佳模块是什么?

BeautifulSoup 的 Python 3 兼容性

变量类型注解NameError不一致

0 是 0 == 0(#evaluates 为真?)

Python - 类 __hash__ 方法和集合