mik*_*1aj 35 python attributes object
这是一件让我困扰一段时间的事情.为什么我不能这样做:
>>> a = ""
>>> a.foo = 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'foo'
Run Code Online (Sandbox Code Playgroud)
......虽然我可以做以下事情?
>>> class Bar():
... pass
...
>>> a = Bar()
>>> a.foo = 10 #ok!
Run Code Online (Sandbox Code Playgroud)
这里的规则是什么?你能指点我一些描述吗?
Thi*_*ter 53
您可以将属性添加到具有的任何对象__dict__.
x = object() 例如,没有它.__slots__也没有它.class除非前面的陈述适用,否则定义的类具有它.如果对象正在使用__slots__/没有__dict__,则通常是为了节省空间.例如,在一个str单词中使用dict会有点过分 - 想象一下非常短的字符串的膨胀量.
如果要测试给定对象是否具有__dict__,则可以使用hasattr(obj, '__dict__').
这可能也很有趣:
某些对象(如内置类型及其实例(列表,元组等))没有
__dict__.因此,无法在其上设置用户定义的属性.
关于Python的数据模型,包括另一个有趣的文章__dict__,__slots__等是这个从Python参考.
| 归档时间: |
|
| 查看次数: |
16213 次 |
| 最近记录: |