我正在阅读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')
但是我想为什么另一个代码不起作用(是否潜入Python 2过时了?)
答案 0 :(得分:0)
抱怨您的FileInfo没有数据属性。您可以通过在 init 功能下添加“self.data = XXX”来解决此问题。根据您的需要而定。您需要初始化 init
下的所有属性