究竟是什么" AttributeError:临时实例没有属性' __ getitem __'"意思?

时间:2013-09-11 23:00:30

标签: python class attributeerror

我正在尝试了解我现在使用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__'

为什么会这样?

1 个答案:

答案 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'