【问题标题】:__str__ to give a visual representation of the 2D table in python__str__ 在 python 中给出二维表的可视化表示
【发布时间】:2018-11-16 19:28:47
【问题描述】:

我在我的程序中使用下面的 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)

【问题讨论】:

  • __str__ 不是这样工作的,您应该打印__str__ 返回的任何内容,而不是在__str__ 中打印出来...请阅读有关如何正确使用这些功能的文档.

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


【解决方案1】:
return print(('\n'.join(['|'.join([str(cell) for cell in row]) for row in self._table])))

您的__str__ 函数实际上返回的是print 函数的结果(即NoneType,因为print 没有返回任何内容),而不是二维表的字符串。导致你得到这个错误,因为__str__ 应该返回一个字符串。应该是:

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

【讨论】:

  • 当我使用 return ('\n'.join(['|'.join([str(cell) for cell in row]) for row in self._table])) 时,输出是'1|2|3\n2|4|6\n3|6|9' ,如何在不使用 print 语句的情况下将 str() 输出作为表格
猜你喜欢
  • 2019-06-15
  • 1970-01-01
  • 2022-11-05
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 2022-07-22
  • 1970-01-01
相关资源
最近更新 更多