我有python类:
class Athlete:
def __init__(self,fullName,dob,times):
self.fullName = fullName
self.dob = dob
self.times = times
## print('times is ',times)
def __str__(self):
return ''.join("Athlete[fullName="+self.fullName +",dob="+self.dob+",sortedTimes="+self.sortedTimes+"]")
def __repr__(self):
return self.__str__()
此类的实例作为值存储在地图athleteMap
中。
当我print(athleteMap)
时,我收到此错误:
File "D:/Software/ws/python_ws/collections\athleteList.py", line 11, in __str__
return ''.join("Athlete[fullName="+self.fullName +",dob="+self.dob+",sortedTimes="+self.sortedTimes+"]")
TypeError: Can't convert 'list' object to str implicitly
我需要在print方法中打印Athlete
实例。
如何在python中执行此操作?
答案 0 :(得分:2)
明确地将times
转换为字符串:
return "Athlete[fullName=" + self.fullName + ",dob=" + self.dob + ",sortedTimes=" + str(self.sortedTimes) + ']'
此处您不需要''.join()
。
更好的选择是使用字符串格式:
return "Athlete[fullName={0.fullName},dob={0.dob},sortedTimes={0.sortedTimes}]".format(self)
答案 1 :(得分:1)
您的join
电话没有意义。你可能想要这样的东西:
def __str__(self):
return "Athlete[fullName="
+ str(self.fullName)
+ ",dob="
+ str(self.dob)
+ ",sortedTimes="
+ str(self.sortedTimes)
+ "]"
我已将str
添加到每个属性中,因为我无法确定您将哪一个放入list
。问题从错误中可见 - 列表无法隐式转换为字符串 - 您需要通过str()
调用显式标记此转换。您的一个属性(最可能是dob
或times
)是一个列表。