请看下面的代码和我得到的属性错误。谢谢你的帮助。你知道吗
这就是我得到的错误。你知道吗
Traceback (most recent call last):
File "ClassError.py", line 45, in <module>
if __name__ == '__main__':Main()
File "ClassError.py", line 43, in Main
printTest(i)
File "ClassError.py", line 38, in printTest
print f.FirstName
AttributeError: 'str' object has no attribute 'FirstName'
代码
class CompKeyData():
def __init__(self,
FirstName,\
MiddleName,\
LastName):
self.FirstName = FirstName
self.MiddleName = MiddleName
self.LastName = LastName
def __repr__(self):
return repr((self.FirstName,\
self.MiddleName,\
self.LastName))
def __iter__(self):
return iter((self.FirstName,\
self.MiddleName,\
self.LastName))
def ckDataClassList(dataList):
dataObjects = []
for FirstName,\
MiddleName,\
LastName in dataList:
dataObjects.append(CompKeyData(
FirstName,\
MiddleName,\
LastName))
return dataObjects
ckData = [['John', 'Ralph', 'DuMont'], ['Jack', 'Lowry', 'Matern']]
ckClassData = ckDataClassList(ckData)
def printTest(classData):
for f in classData:
print f.FirstName
return None
def Main():
for i in ckClassData:
printTest(i)
if __name__ == '__main__':Main()
您需要将printTest函数更改为:
classData
不是CompKeyData
实例的列表,而是单个CompKeyData
实例。你知道吗PEP8当然也值得一看python风格。你知道吗
当你这么做的时候
每个
i
都是一个CompKeyData
实例。然后你要:它叫:
其中
classData
是您传入的i
。你知道吗这将遍历单个
CompKeyData
实例,该实例(由于__iter__
的实现)依次将FirstName
、MiddleName
和LastName
分配给f
——每个实例都是一个字符串,并且没有FirstName
。你知道吗相反,
printTest
应该是:您不需要显式地
return None
,如果您不显式地return
任何其他内容,则会自动发生这种情况。你知道吗另外,值得一读PEP-0008;遵循这一点将使您的代码更具可读性。你知道吗
相关问题 更多 >
编程相关推荐