super(). 
  Пример:
  
  class Base:
      def method(self):
          print("Base method")
  class Derived(Base):
      def method(self):
          super().method()  # Вызов метода method из Base
          print("Derived method")
  obj = Derived()
  obj.method()
  
  В данном примере, super().method() вызывает метод method из класса Base.
    Вызвать метод базового класса из класса-наследника можно с помощью функции super() или указав имя базового класса напрямую. super() обычно предпочтительнее, так как она работает более надежно, особенно в случае множественного наследования.
  
    Использование super():
  
class BaseClass:
    def method(self):
        print("Method from BaseClass")
class DerivedClass(BaseClass):
    def method(self):
        super().method()  # Вызов метода method из BaseClass
        print("Method from DerivedClass")
obj = DerivedClass()
obj.method()
  
      В этом примере, super().method() в DerivedClass вызывает метод method из BaseClass.  super() возвращает временный объект класса-родителя, позволяя вам вызывать его методы.  Python автоматически передает self в метод базового класса.
  
Использование имени базового класса напрямую:
class BaseClass:
    def method(self):
        print("Method from BaseClass")
class DerivedClass(BaseClass):
    def method(self):
        BaseClass.method(self)  # Вызов метода method из BaseClass
        print("Method from DerivedClass")
obj = DerivedClass()
obj.method()
  
    Здесь мы явно вызываем метод method базового класса, указывая BaseClass.method(self). Важно передать self явно, так как это обычный метод класса.  Хотя этот способ работает, он менее гибкий и может привести к проблемам при изменении иерархии классов, особенно при множественном наследовании.  Использование super() делает код более переносимым и удобным в сопровождении.
  
    super() с аргументами:
  
      В сложных случаях, особенно с множественным наследованием, можно использовать super(DerivedClass, self).method().  Это явно указывает, что нужно искать метод method, начиная с базового класса DerivedClass в иерархии классов.  Однако, обычно super().method() достаточно и более читаемо.
    
class A:
    def __init__(self):
        print("A.__init__()")
class B(A):
    def __init__(self):
        super().__init__()
        print("B.__init__()")
obj = B()
  
    Почему super() предпочтительнее: