在python中,如何使用_str___)逐行返回列表中的元素

在python中,如何使用_str___)逐行返回列表中的元素,python,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,

我有一个类
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")
我的尝试不正确,因为输出末尾有一个空行。我被卡住了,因为
\uuu str\uuu
要求您返回字符串类型元素。

您看到的内容 您看到了一个额外的换行符,因为您正在打印
\uuuuu str\uuuu
函数中列表中的每个元素,然后打印从
\uuuuuuu str\uuu
返回的值:即
“”
。除非在
print
中指定
end
,否则它默认为换行符,因此实际上是在打印
“\n”

你(可能)想做什么 您可能只想打印类的字符串表示。如果这是每个元素的换行符,我将用以下方式定义
\uuu str\uuu

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

这将在
self.number
中每个元素的字符串表示形式和返回单个字符串之间放置一条换行符。

返回'\n'。加入(映射(str,self.number))
您不应该在
中打印
;它应该严格返回。只需将
中的数字换行即可。非常感谢您的快速回复。我以前读过一篇类似的文章,并试图使用join(),但我遇到了一个错误。不,我明白这是因为我处理的是整数列表而不是字符串。
def __str__(self):
    return '\n'.join(map(str, self.number))