该程序将文本消息存储在类中,如何在类中打印它

时间:2015-03-18 20:39:14

标签: python class

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代码以正确打印

1 个答案:

答案 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)