[英]Change default print for class object - Python
我有一个班级Board
。
class Board:
# Initialize empty n x n board
def __init__(self, n):
self.board = [[0]*n for x in range(n)]
self.size_n = n
# ...
我希望能够使用默认的print(board_obj)
函数print(board_obj)
此类的对象,以便获得以下输出:
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
我试过了,但是它在一行中打印矩阵,这是我不想要的:
# Represent the class object as its board
def __repr__(self):
return repr(self.board)
错误的输出:
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
我也不想像下面这样的自定义类方法:
# Custom print
def print_board(self):
for row in self.board:
print row
怎么样:
def __str__(self):
return '\n'.join(map(repr, self.board))
您应该将__str__
用于可读版本,将__repr__
用于明确版本。
实现__str__
方法可以在默认情况下很好地打印内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.