Я работаю над вызовом класса MarbleBoard, и мой код ниже:

class MarblesBoard:
    def __init__(self, balls):
        self.balls=balls
        print (self.balls)

board = MarblesBoard((3,6,7,4,1,0,8,2,5)) 

Результат, который я получил:

(3, 6, 7, 4, 1, 0, 8, 2, 5)

Но я хочу получить результат ниже

board = MarblesBoard((3,6,7,4,1,0,8,2,5)) 
board 
3 6 7 4 1 0 8 2 5 
0
qing zhangqing 23 Окт 2018 в 03:34

2 ответа

Лучший ответ

Как только вы работаете с классом, вы можете использовать метод __repr__ для вычисления "официальной" репутации строки объекта:

class MarblesBoard():
    def __init__(self, balls):
        self.balls = balls

    def __repr__(self):
        return " ".join(str(i) for i in self.balls)

Теперь, когда вы вызываете переменную board, вы получаете следующий вывод:

board = MarblesBoard((3,6,7,4,1,0,8,2,5))
board
3 6 7 4 1 0 8 2 5
0
carlos_fab 23 Окт 2018 в 01:04

Вместо того, чтобы печатать в методе __init__, вы должны определить метод __repr__ для вашего класса.

Например:

def __repr__(self):
    return ' '.join([str(ball) for ball in self.balls])

Тогда вы можете сделать:

board = MarblesBoard((3,6,7,4,1,0,8,2,5)) 
print(board)
3 6 7 4 1 0 8 2 5
2
Brian Amadio 23 Окт 2018 в 00:40
52939500