我有两个类:MyClass和MyClass2。对于MyClass,我拿了一个文件并返回该文件中的每个单词。在MyClass2中,我继承了MyClass,并且基本上编写了一个代码,该代码应该将字典中的所有单词以及单词的频率存储为值。 我已经测试的第一堂课,它能够返回每个单词。 MyClass2我以为我写得正确,但我认为我没有正确继承MyClass或我的 iter 方法写得不正确。每次我尝试运行我的代码时,都会返回错误。 由于这是一项家庭作业,(我也不想被视为作弊..)我不会发布我的所有代码,除非有必要回答我的问题,我也不会期待任何人重写或完全修复我的代码。我只是需要一些关于我的构造函数是否错误或者整个代码是否错误的指导,或者我是否只是没有正确格式化我的代码并继承班错了......? 我是python的新手,我只需要帮助。
from myclass import MyClass
class MyClass2(MyClass):
def __init__(self, Dict): #Is the problem within the constructor?
self.Dict = Dict
Dict = {}
def dict(self, textfile):
text = MyClass(textfile) #Was I wrong here??
..................
..............
..............
return self.Dict
def __iter__(self):
for key, value in self.Dict.items():
yield key, value
当我运行测试代码时,我收到一条错误消息:
AttributeError: 'MyClass2' object has no attribute 'items'
如果我遗失任何信息或信息不足,请告诉我。
我使用以下代码测试了它:
filename = MyClass1('name of file')
y = MyClass2(filename)
for x in y:
print x
这是追溯:
Traceback (most recent call last):
File "C:\myclass.py", line 25, in <module>
for x in y:
File "C:\myclass2.py", line 19, in __iter__
for key, value in self.Dict.items():
AttributeError: 'MyClass2' object has no attribute 'items'
答案 0 :(得分:0)
你的变量命名很奇怪。我会试着解开它:
from myclass import MyClass
class MyClass2(MyClass):
def __init__(self, Dict):
self.Dict = Dict
Dict = {}
def __iter__(self):
for key, value in self.Dict.items():
yield key, value
filename = MyClass1('name of file')
y = MyClass2(filename)
此处,filename
不是文件名(我怀疑是str
或unicode
)。也许它是一个以某种方式包含文件名的对象。 (命名MyClass1
不是很有帮助。)
filename
引用的此对象已提供给MyClass2.__init__()
。它被放入self.Dict
。然后,参数Dict
设置为{}
,这是毫无意义的。
class MyClass2(MyClass):
def __init__(self, filename):
self.filename = filename
self.Dict = {}
def __iter__(self):
for key, value in self.Dict.items():
yield key, value
注意:将变量命名为小写更好。并且不要将Dict
重命名为dict
,而是将其命名为读者可以看到它的含义。