"""
Реализовать класс Matrix (матрица). Обеспечить перегрузку конструктора класса (метод __init__()),
который должен принимать данные (список списков) для формирования матрицы.
Подсказка: матрица — система некоторых математических величин, расположенных в виде прямоугольной схемы.

Следующий шаг — реализовать перегрузку метода __str__() для вывода матрицы в привычном виде.
Далее реализовать перегрузку метода __add__() для реализации операции сложения двух объектов класса Matrix (двух матриц)
Результатом сложения должна быть новая матрица.

Подсказка: сложение элементов матриц выполнять поэлементно —
первый элемент первой строки первой матрицы складываем с первым элементом первой строки второй матрицы и т.д.

"""
import numpy as np


class Mismatched_matrices(Exception):
    pass


class Matrix:
    def __init__(self, my_list):
        self.list = my_list

    def __add__(self, other):
        a = np.array(self.list)
        b = np.array(other.list)
        if len(a) != len(b):
            raise Mismatched_matrices("Размерности матриц должны совпадать")
        n = a + b
        b = n.tolist()
        print(type(b))
        return b

    def __str__(self):
        return str('\n'.join(['\t'.join([str(j) for j in i]) for i in self.list]))


maze_1 = Matrix([[3, 5, 32],
                 [2, 5, 6],
                 [-1, 64, -8]])

maze_2 = Matrix([[5, 8, 10],
                 [3, 6, 7],
                 [2, 5, 3]])

maze_sum = maze_2 + maze_1
print(Matrix(maze_sum))

"""
Реализовать приведение меньшей матрицы к размерности большей матрицы.
"""