【发布时间】:2011-04-07 18:06:43
【问题描述】:
(全部在 ActivePython 3.1.2 中)
我试图更改类(而不是实例)属性。元类的__dict__ 似乎是完美的解决方案。但是当我尝试修改时,我得到了:
TypeError: 'dict_proxy' 对象确实 不支持物品分配
为什么,我该怎么办?
编辑
我正在类定义中添加属性。
setattr 不起作用,因为该类尚未构建,因此我还不能引用它(或者至少我不知道如何)。
传统的赋值行不通,因为我要添加大量属性,它们的名称是由某个规则确定的(所以我不能随便打出来)。
换句话说,假设我希望class A 具有A.a001 到A.a999 的属性;并且必须在完全构建之前定义所有这些(否则 SQLAlchemy 将无法正确检测它)。
另请注意,我在原标题中打错了字:我想修改的是普通类的 __dict__,而不是元类。
【问题讨论】:
-
在这种情况下,您是如何访问 dict 的?
-
它让我可以访问它,只是不能修改
标签: python-3.x metaclass