繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM