class Child(Parent1, Parent2): ....
  Parent1.attribute или Parent2.attribute для явного указания, из какого класса брать атрибут.Child.__mro__ или Child.mro().super() с осторожностью, понимая MRO, чтобы избежать нежелательного поведения.  Особенно важно при использовании super() в нескольких наследуемых классах.Множественное наследование в Python позволяет классу наследовать атрибуты и методы от нескольких родительских классов. Это мощный инструмент, но он требует осторожного использования, чтобы избежать конфликтов имен и неоднозначности.
Как использовать множественное наследование:
Просто перечислите классы-родители в скобках после имени дочернего класса при его определении. Порядок, в котором указываются родительские классы, имеет значение, поскольку он определяет порядок поиска атрибутов, используемый методом `__mro__`.
 class ClassA:
  def method(self):
   print("Method from ClassA")
 class ClassB:
  def method(self):
   print("Method from ClassB")
 class ClassC(ClassA, ClassB):
  pass # ClassC inherits from A and B
 instance = ClassC()
 instance.method()  # Prints "Method from ClassA" because A is listed first
  Как избежать конфликтов атрибутов (проблема "алмазного наследования"):
 print(ClassC.__mro__) # Example output: (<class '__main__.ClassC'>, <class '__main__.ClassA'>, <class '__main__.ClassB'>, <class 'object'>)
  
 class ClassA:
  def method(self):
   print("Method from ClassA")
 class ClassB:
  def method(self):
   print("Method from ClassB")
 class ClassC(ClassA, ClassB):
  def method(self):
   ClassB.method(self) # Call method from ClassB
   print("Method from ClassC")
 instance = ClassC()
 instance.method() # Prints "Method from ClassB" followed by "Method from ClassC"
  
 class ClassA:
  def __init__(self, a):
   print("ClassA init")
   self.a = a
 class ClassB:
  def __init__(self, b):
   print("ClassB init")
   self.b = b
 class ClassC(ClassA, ClassB):
  def __init__(self, a, b):
   ClassA.__init__(self, a) # Be careful to use same arguments or unexpected results may occur
   ClassB.__init__(self, b)
   print("ClassC init")
   self.c = a + b
 instance = ClassC(1, 2) # Calls ClassA.__init__, ClassB.__init__, and ClassC.__init__
  
 class LoggingMixin:
  def log(self, message):
   print(f"LOG: {message}")
 class MyClass(LoggingMixin):
  def do_something(self):
   self.log("Doing something...")
   # ... rest of the method ...
  Важно помнить: Множественное наследование следует использовать с осторожностью. Чрезмерное использование может привести к сложному и трудно поддерживаемому коду. Всегда оценивайте, является ли это действительно лучшим решением для вашей конкретной задачи.