这个程序在一个类里存储文本信息,我怎么在这个类里打印它?

2024-09-30 22:28:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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代码以适当打印


Tags: selfreturnmaindefmsgstrinboxunread
1条回答
网友
1楼 · 发布于 2024-09-30 22:28:13

假设您只需要将这些字符串附加到初始化为thelist=[]的列表中,然后返回'\n'.join(thelist)。但是在你的代码中还有其他一些异常

self.__main=self.__inbox.append(singleMsg)
return self.__main

这毫无意义append总是返回None。为什么要费心把None保存为self的属性并返回它

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+" "

除了在循环的第一个过程上returning的明显错误(因此不会有其他过程)之外,这将失败,因为someStr在方法的范围内是而不是;我想你应该改用self.someStr(在我看来还是很奇怪,但至少是这样works:-).

所以这个方法必须变成:

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)

相关问题 更多 >