Каким образом работает строчка super().__setattr__(key, value)

class Rectangle:
     def __init__(self, width, height):
        self.width = width
        self.height = height

     def calculate_area(self):
        return self.width * self.height


class Square(Rectangle):
     def __init__(self, side):
        super().__init__(side, side)

     def __setattr__(self, key, value):
        super().__setattr__(key, value)
        if key in ("width", "height"):
           self.__dict__["width"] = value
           self.__dict__["height"] = value


rect = Rectangle(4, 5)
square = Square(3)

Как я понимаю, метод super() вызывает метод класса родителя, но как строчка super()__setattr__(self, key, value) интерпретируется - я не понимаю, ведь у класса Rectangle нет метода __setattr__.


Ответы (0 шт):