【问题标题】:In python, how to use __str__ to return elements in a list, line by line在python中,如何使用__str__逐行返回列表中的元素
【发布时间】:2021-10-22 22:06:12
【问题描述】:

我有一个类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__ 要求你返回字符串类型的元素。

【问题讨论】:

  • return '\n'.join(map(str, self.number))
  • 你不应该是printing in __str__;它应该严格返回。只需 join 带有换行符的数字。

标签: python


【解决方案1】:

你看到了什么

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

你(可能)想要做什么

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

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

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

【讨论】:

  • 非常感谢您的快速回复。我之前正在阅读类似的帖子并尝试使用 join(),但出现错误。不,我理解这是因为我正在处理整数列表而不是字符串。
猜你喜欢
  • 2015-05-08
  • 2021-12-11
  • 1970-01-01
  • 2013-12-08
  • 2016-11-09
  • 2016-07-05
  • 1970-01-01
  • 2021-06-24
相关资源
最近更新 更多