"""
1. Реализовать класс Matrix (матрица).
Обеспечить перегрузку конструктора класса (метод init()),
который должен принимать данные (список списков) для формирования матрицы.
Подсказка: матрица — система некоторых математических величин, расположенных в виде прямоугольной схемы.
Примеры матриц вы найдете в методичке.
Следующий шаг — реализовать перегрузку метода str() для вывода матрицы в привычном виде.
Далее реализовать перегрузку метода add() для реализации операции сложения двух объектов класса Matrix (двух матриц).
Результатом сложения должна быть новая матрица.
Подсказка: сложение элементов матриц выполнять поэлементно — первый элемент первой строки первой матрицы
складываем с первым элементом первой строки второй матрицы и т.д.
"""

class Matrix:

    def __init__(self, lst):
        self.lst = lst

    def __str__(self):
        for i in range(len(self.lst)):
            print(self.lst[i])
        return ''

    def __add__(self, other):
        res_mc = [[0 for i in range(len(self.lst[0]))] for x in range(len(self.lst))]
        # print(res_mc)
        for itm in range(len(self.lst)):
            for j in range(len(self.lst[0])):
                res_mc[itm][j] = (self.lst[itm][j] + other.lst[itm][j])
        for im in range(len(res_mc)):
            print(res_mc[im])
        return ''

mc1 = Matrix([
    [10, 20, 1],
    [20, 30, 2],
    # [3, 4, 3]
])

mc2 = Matrix([
    [1, 2, 4],
    [3, 4, 5],
    # [4, 6, 7]
])

print(mc1)
print(mc2)
print(mc1 + mc2)
# a = mc1.__str__()