In [67]: obj = object()
In [68]: obj.x = 42
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/home/user/<ipython-input-68-0203a27904ca> in <module>()
----> 1 obj.x = 42
AttributeError: 'object' object has no attribute 'x'
In [69]: class myc(object):
....: pass
....:
In [70]: my = myc()
In [71]: my.x = 42
看起来不一致。如何在不允许添加新属性的情况下使我的类与object
类似?
答案 0 :(得分:2)
大多数内置类型不允许自定义属性,因为这些属性与每个实例关联的字典的开销有关。默认情况下,自定义类具有此类字典(可通过__dict__
属性访问),但您可以通过添加
__slots__ = []
到班级定义 - 有关详细信息,请参阅documentation。