-2

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

为什么会这样?

4

1 回答 1

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'
于 2013-09-11T23:04:51.630 回答