更改类对象的默认打印 - Python

时间:2018-03-14 13:02:28

标签: 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)函数打印此类的对象,以便获得此输出:

[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

2 个答案:

答案 0 :(得分:2)

怎么样:

def __str__(self):
    return '\n'.join(map(repr, self.board))

您应该使用__str__作为人类可读的版本,将__repr__作为不明显的版本。

答案 1 :(得分:-1)

默认情况下,实现__str__方法可以很好地打印。