Как вывести объект класса матрицы через 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)
→ Ссылка