在python中,如何使用__str__逐行返回元素

时间:2017-06-01 13:48:43

标签: python

我有一个班级Numberlist,它带有一个数字列表。

class Numberlist:
    def __init__(self,number):
        self.number=number
    def __str__(self):
        for i in self.number:
            print(i)
        return '{}'.format('')

我想在打印对象时以下列格式显示数字列表。

x = Numberlist([1,2,3,4,5,6])
print(x)
print("done printing")
1 
2 
3
4
5
6

done printing

我的尝试不正确,因为输出末尾有一个空行。我被卡住了,因为__str__要求你返回字符串类型元素。

1 个答案:

答案 0 :(得分:2)

你看到了什么

您看到了一个额外的换行符,因为您打印了__str__函数列表中的每个元素,然后打印了__str__返回的值:即""。除非您在end中指定print,否则默认为换行符,因此您可以有效地打印"\n"

你(可能)想做什么

您可能只想打印类的字符串表示形式。如果每个元素都是换行符分隔的,我会按以下方式定义__str__

def __str__(self):
    return '\n'.join(map(str, self.number))

这将在self.number中的每个元素的字符串表示形式之间添加换行符并返回该单个字符串。