我正在尝试格式化对象的__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]
我该怎么做?
答案 0 :(得分:4)
使用str.join
:
>>> 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(repr(t) for t in self.taskArray))
...
>>> print(Data(4))
Units: 4
[foo,
bar]
答案 1 :(得分:1)
您需要创建一个字符串,其中每个元素都以taskArray列表中的,\n
结尾。您可以使用str.join()
class Data:
def __init__(self,units, taskArray):
self.units = units
self.taskArray = taskArray
def __repr__(self):
taskArrayStr = ',\n'.join([str(task) for task in self.taskArray])
return str("Units: {0} \n[{1}]".format(self.units, taskArrayStr))
d = Data(4, ['Element1', 'Element2', 'Element3'])
print(d)
d = Data(4, [1, 'Element2', 3.0])
print(d)
您的输出将是
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]
答案 2 :(得分:1)
我认为最好的方法是:
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]
答案 3 :(得分:0)
到目前为止,最简单的方法是使用pprint
模块。您应该使用它来漂亮地打印任意对象,除非您需要不支持的特定输出格式。