__str__在python中给出2D表的可视化表示

时间:2018-06-07 01:32:58

标签: string python-3.x multidimensional-array

我在程序中使用下面的 str 函数来表示2D表格

def __str__(self):
        """Returns a string representation of the table"""
        return ('\n'.join(['|'.join([str(cell) for cell in row]) for row in self._table]))

如果我使用str()

,它会给我以下输出
'1|2|3\n2|4|6\n3|6|9'

如何使用print()

将其显示如下
1|2|3
2|4|6
3|6|9

我尝试将 str 定义如下:

def __str__(self):
        """Returns a string representation of the table"""
        return print(('\n'.join(['|'.join([str(cell) for cell in row]) for row in self._table])))

使用str()

给出低于错误的输出
1|2|3
2|4|6
3|6|9
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    str(MultiplicationTable(3))
TypeError: __str__ returned non-string (type NoneType)

1 个答案:

答案 0 :(得分:0)

return print(('\n'.join(['|'.join([str(cell) for cell in row]) for row in self._table])))

您的__str__函数实际上返回print函数的结果(NoneType,因为print没有返回任何内容),而不是您的2d表的字符串。引导您获取此错误,因为__str__应该返回一个字符串。它应该是:

return ('\n'.join(['|'.join([str(cell) for cell in row]) for row in self._table]))