【发布时间】:2012-01-12 22:16:25
【问题描述】:
为什么它不适用于内置类?
使用子类是修复它的最佳方法,还是会遇到一些隐藏的问题?
a = {}
a.p = 1 # raises AttributeError
class B(dict):
pass
b = B()
b.p = 1 # works
编辑:我最初认为它不适用于 b 的评论不正确(我犯了一个错误)。
【问题讨论】:
-
懒懒回答:
__slots__;dict也是用 C 实现的,你正在继承它。 -
你用的是什么python版本? b.p = 1 适用于 2.7.2 和 3.2
-
非常抱歉,它确实适用于 b。更新了问题以反映这一点。
-
你可以自己修改内置类——你必须创建它们的子类。
-
@BasicWolf:为什么这么说?
标签: python attributes python-3.x subclass