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

标签 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__ 要求您返回字符串类型元素。

最佳答案

你所看到的

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

你(可能)想做的事情

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

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

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

关于python - 在 python 中,如何使用 __str__ 逐行返回列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44309372/

相关文章:

python - 暂停工作线程并等待来自主线程的事件

python - 将函数应用于具有多种类型的空白字符的字符串中的每个单词的最 pythonic 方法是什么?

python - 如何在 MapBox 上显示来自 GeoDjango 的 GeoJson 点图层

python - Python中的集合和列表有什么区别?

python - 如何在Shapely中提取没有数组的几何对象的坐标

python - Bottle web 框架 - 如何停止?

python - Pandas 中的合并问题

Python SMTP.login 不起作用

python - lxml 未安装在 AWS Elasticbeanstalk 实例上

python - Python 的 CPU 火焰图