0

我正在阅读Dive into python 2并且我在这个例子中遇到了麻烦:

class FileInfo(dict):

   def __init__(self, filename = None):
      self['name'] = filename

   def __getitem__(self, key):
     return self.data[key]


if __name__ == '__main__':
   f = FileInfo('pixies.mp3')
   print f.__getitem__('name')

我收到此错误:

Traceback (most recent call last):
  File "FileInfo.py", line 12, in <module>
     print f.__getitem__('name')
  File "FileInfo.py", line 7, in __getitem__
     return self.data[key]
AttributeError: 'FileInfo' object has no attribute 'data'

我正在使用 Python2.7

编辑 实际上,这段代码工作正常:

class FileInfo(dict):

  def __init__(self, filename = None):
     dict.__setitem__(self, 'name', filename)

  def __getitem__(self, key):
     return dict.__getitem__(self, key)


if __name__ == '__main__':
   f = FileInfo('pixies.mp3')
   print f.__getitem__('name')

但我想知道为什么另一个代码不起作用(Dive into Python 2 过时了吗?)

4

1 回答 1

0

它抱怨您的 FileInfo 没有数据属性。您可以通过在您的init函数下添加“self.data=XXX”来解决它。取决于你需要什么。您需要初始化 init下的所有属性

于 2013-04-15T22:08:28.947 回答