我正在尝试了解我现在使用python 2.7时遇到的问题。
以下是来自test.py文件的代码:
class temp:
def __init__(self):
self = dict()
self[1] = 'bla'
然后,在终端上,我输入:
from test import temp
a=temp
如果我输入a
我就明白了:
>>> a
<test.temp instance at 0x10e3387e8>
如果我试着阅读a[1]
,我就明白了:
>>> a[1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: temp instance has no attribute '__getitem__'
为什么会这样?
答案 0 :(得分:5)
首先,您发布的代码不会产生您记下的错误。你还没有实例化这个类; a
只是temp
的另一个名称。所以你的实际错误信息将是:
TypeError: 'classobj' object has no attribute '__getitem__'
即使你实例化它(a = temp()
),它仍然不会做你想象的那样。分配self = dict()
只会更改self
方法中变量__init__()
的值;它对实例没有任何作用。当__init__()
方法结束时,此变量消失,因为您没有将其存储在其他任何位置。
似乎您可能想要改为dict
的子类:
class temp(dict):
def __init__(self):
self[1] = 'bla'