python:向内置类动态添加属性

2024-06-17 15:35:16 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么它不适用于内置类?在

使用子类是解决它的最佳方法,还是会遇到一些隐藏的问题?在

a = {}
a.p = 1 # raises AttributeError
class B(dict):
  pass
b = B()
b.p = 1 # works

编辑:我最初的评论说它不适用于b是不正确的(我犯了一个错误)。在


Tags: 方法编辑错误评论pass子类内置dict
2条回答

如果您想要子类dict,那么可以始终使用UserDicthere the documentation)。在

它与你想做的事情相配合:

from collections import UserDict

a = UserDict()
a.p = 10 # works fine

内置类不能具有任意属性。{{{1}你需要尽可能多的使用cd2}类的性能。在

因此,内置类没有任意属性工作所需的__dict__字典。在

你可以在你的课上达到同样的效果。如果它们是用C编写的,那么您就不能实现__dict__支持。如果它们是用Python编写的,则使用slots。在

相关问题 更多 >