import datetime
class SMS_Inbox:
def ___init___(self):
self.__inbox=[]
def addNewArrival(self,senderPhone,arrivalTime,msgTxt):
msgInfotuple=(senderPhone,arrivalTime,msgTxt)
singleMsg=[False,msgInfotuple]
self.__main=self.__inbox.append(singleMsg)
return self.__main
someStr=""
def __str__(self):
for msg in self.__inbox:
unread=msg[0]
msgTuple=msg[1]
phoneNum=msgTuple[0]
date=msgTuple[1]
txt=msgTuple[2]
return str(unread)+ someStr+" " +str(phoneNum) + someStr+" " + str(txt)+someStr+" "
如何更改此str代码以正确打印
答案 0 :(得分:1)
据推测,您只需要将这些字符串附加到初始化为thelist=[]
的列表中,然后返回'\n'.join(thelist)
。但是您的代码中还有其他一些异常现象。
self.__main=self.__inbox.append(singleMsg)
return self.__main
这没有任何意义。 append
始终会返回None
。为什么要将None
保存为self
的属性并将其保存并将其归还?#/ p>
someStr=""
def __str__(self):
for msg in self.__inbox:
unread=msg[0]
msgTuple=msg[1]
phoneNum=msgTuple[0]
date=msgTuple[1]
txt=msgTuple[2]
return str(unread)+ someStr+" " +str(phoneNum) + someStr+" " + str(txt)+someStr+" "
除了return
第一次循环的明显错误(因此永远不会有其他传递),这将失败,因为someStr
不是方法范围;我想你需要使用self.someStr
代替。 (对我来说仍然看起来很奇怪,但至少它有效: - )。
所以这个方法必须像:
someStr=""
def __str__(self):
thelist = []
someStr = self.someStr
for msg in self.__inbox:
unread=msg[0]
msgTuple=msg[1]
phoneNum=msgTuple[0]
date=msgTuple[1]
txt=msgTuple[2]
s = str(unread)+ someStr+" " +str(phoneNum) + someStr+" " + str(txt)+someStr+" "
thelist.append(s)
return '\n'.join(thelist)