您可以向具有的任何对象添加属性
__dict__。
x = object()
例如,没有它。- 字符串和其他简单的内置对象也没有它。
- 使用类
__slots__
也没有它。 class
除非前面的声明适用,否则用定义的类都具有它。
如果使用
__slots__/的对象没有/
__dict__,通常是为了节省空间。例如,如果有一个命令
str,那就太过分了-
想象一下一个非常短的字符串的膨胀程度。
如果要测试给定对象是否具有
__dict__,可以使用
hasattr(obj, '__dict__')。
这也可能是有趣的阅读:
某些对象(例如内置类型及其实例(列表,元组等))没有
__dict__。因此,无法在其上设置用户定义的属性。
关于Python的数据模型,包括另一个有趣的文章
__dict__,
__slots__等是这个从Python参考。



