Как вывести объект класса матрицы через print
Требуется создать класс матрицы размером m*n, а также настроить магический метод __str__ чтобы при выводе через print, объект выводился в формате матрицы (прямоугольник из n строк длины m). Создал класс, а где в методе прописать перевод на другую строку не знаю, опыта в ООП и подобных вещах мало.
class Matrix:
def __init__(self, n, m):
self.n = n#строки
self.m = m#столбцы
self.matrix = [[0]*cols]*rows
def __str__(self):
return f'{[[j for j in i] for i in self.matrix]}'
a = Matrix(3, 5)
print(a.n, a.m, a, sep='\n')
Что по моей задумке он должен выводить:
3
5
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
Что он выводит по факту:
3
5
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
Ответы (1 шт):
Автор решения: Xander
→ Ссылка
Вот так должен выглядеть метод __str__, чтобы получилось то, что вы хотите:
def __str__(self):
lines = []
for row in self.matrix:
line = ' '.join(str(x) for x in row)
lines.append(line)
return '\n'.join(lines)