请看下面的代码和我得到的属性错误。谢谢你的帮助。
这就是我所犯的错误。
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() 发布于 2014-03-11 14:30:00
当你做的时候
for i in ckClassData:每个i都是一个CompKeyData实例。然后你就会:
printTest(i)这就要求:
for f in classData:其中classData是您传入的i。
这将遍历单个CompKeyData实例,该实例(由于__iter__的实现)依次将FirstName、MiddleName和LastName分配给f- -每个实例都是一个字符串,没有FirstName。
相反,printTest应该是:
printTest(classData):
print classData.FirstName您不需要显式return None,如果不显式return其他任何内容,则会自动发生这种情况。
此外,它值得阅读佩普-0008;遵循这将使您的代码更具可读性。
https://stackoverflow.com/questions/22328553
复制相似问题