2024-09-27 19:14:13 发布
网友
为什么它不适用于内置类?在
使用子类是解决它的最佳方法,还是会遇到一些隐藏的问题?在
a = {} a.p = 1 # raises AttributeError class B(dict): pass b = B() b.p = 1 # works
编辑:我最初的评论说它不适用于b是不正确的(我犯了一个错误)。在
b
如果您想要子类dict,那么可以始终使用UserDict(here the documentation)。在
dict
UserDict
它与你想做的事情相配合:
from collections import UserDict a = UserDict() a.p = 10 # works fine
内置类不能具有任意属性。{{{1}你需要尽可能多的使用cd2}类的性能。在
因此,内置类没有任意属性工作所需的__dict__字典。在
__dict__
你可以在你的课上达到同样的效果。如果它们是用C编写的,那么您就不能实现__dict__支持。如果它们是用Python编写的,则使用slots。在
如果您想要子类
dict
,那么可以始终使用UserDict
(here the documentation)。在它与你想做的事情相配合:
内置类不能具有任意属性。{{{1}你需要尽可能多的使用cd2}类的性能。在
因此,内置类没有任意属性工作所需的
__dict__
字典。在你可以在你的课上达到同样的效果。如果它们是用C编写的,那么您就不能实现
__dict__
支持。如果它们是用Python编写的,则使用slots。在相关问题 更多 >
编程相关推荐