Python 将\n添加到报告__

Python 将\n添加到报告__,python,Python,我试图格式化一个对象的_repr__,这样它就可以用一个新行字符分隔数组中的每个元素 这是一节课: class Data: taskArray = [] def __init__(self,units): self.units = units def __repr__(self): return str("Units: {0} \n{1}".format(self.units, self.taskArray)) 目前,它将按如下方式打印:

我试图格式化一个对象的_repr__,这样它就可以用一个新行字符分隔数组中的每个元素

这是一节课:

class Data:
    taskArray = []
    def __init__(self,units):
        self.units = units
    def __repr__(self):
        return str("Units: {0} \n{1}".format(self.units, self.taskArray))
目前,它将按如下方式打印:

Units: 4
[Element1, Element2, Element3]
Units: 4
[Element1,
Element2,
Element3]
我希望它像这样打印:

Units: 4
[Element1, Element2, Element3]
Units: 4
[Element1,
Element2,
Element3]

如何实现这一点?

您需要在taskArray列表中创建一个字符串,每个元素都以\n结尾才能实现。您可以使用

您的输出将是

d = Data(4, ['Element1', 'Element2', 'Element3'])
print(d)
#Units: 4 
#[Element1,
#Element2,
#Element3]
d = Data(3, [1, 'Element2', 3.0])
print(d)
#Units: 3 
#[1,
#Element2,
#3.0]

您需要在taskArray列表中创建一个字符串,使每个元素以\n结尾才能实现它。您可以使用

您的输出将是

d = Data(4, ['Element1', 'Element2', 'Element3'])
print(d)
#Units: 4 
#[Element1,
#Element2,
#Element3]
d = Data(3, [1, 'Element2', 3.0])
print(d)
#Units: 3 
#[1,
#Element2,
#3.0]
使用:

使用:


我认为最好的办法是:

class Data:
    taskArray = ['foo', 'bar']
    def __init__(self,units):
        self.units = units
    def __repr__(self):
        return "Units: {0} \n[{1}]".format(self.units, ',\n'.join(map(str, self.taskArray)))
print(Data(4))
输出:

Units: 4 
[foo,
bar]

我认为最好的办法是:

class Data:
    taskArray = ['foo', 'bar']
    def __init__(self,units):
        self.units = units
    def __repr__(self):
        return "Units: {0} \n[{1}]".format(self.units, ',\n'.join(map(str, self.taskArray)))
print(Data(4))
输出:

Units: 4 
[foo,
bar]

到目前为止,最简单的方法是使用pprint模块。除非您需要不支持的特定输出格式,否则您应该使用它来漂亮地打印任意对象。

到目前为止,最简单的方法是使用pprint模块。您应该使用它来漂亮地打印任意对象,除非您需要它不支持的特定输出格式。

您需要将列表转换为字符串来打印它。检查我下面的回答是否对您有意义:您需要将列表转换为字符串以打印它。检查我下面的回答是否对您有意义:列表通常使用reprt而不是strt打印其元素。你不必这样做,而且在很多情况下也不会有什么不同。@MadPhysician,join需要字符串才能工作,所以我使用str,在很多情况下调用repr,我认为这更容易理解,但我明白你的意思,你是对的。列表通常用reprt而不是strt打印元素。你不必这样做,而且在很多情况下也不会有什么不同。@MadPhysicator,join需要字符串才能工作,所以我使用了str,在很多情况下调用repr,我认为它更容易理解,但我明白你的意思,你是对的。如果列表元素中没有任何字符串,这将失败。我错过了它,更新了我的代码以涵盖它。感谢您的建议:如果列表元素中没有任何一个元素,那么这个操作将失败。我没有找到它,请更新我的代码以涵盖它。感谢您的建议:如果您希望与列表本身的工作方式保持一致,那么repr是一个更好的选择itrepr是一个更好的选择,如果您希望与列表本身的工作方式保持一致