Как добавить в два разных класса одинаковый функионал, если множественное наследование не работает

Рейтинг: 0Ответов: 1Опубликовано: 28.07.2025

Нужно получить 2 класса MyLayout и MyWidget, где MyLayout должен наследоваться от QHBoxLayout, а MyWidget, допустим, от QLineEdit.

Что к одному, что к другому, мне надо добавить общий функционал. Я пытался решить это множественным наследованием. С MyWidget проблем не было. А вот MyLayout не хочет наследоваться от нескольких предков. Как быть?

Проблема в том, что таких MyWidget и MyLayout очень много. Я могу наследоваться как от QLineEdit, QFrame, так и от QLabel и других. Каждый раз копировать кучу кода в каждый этот класс - не вариант. Как мне добавить одинаковый функционал во все эти классы (QLineEdit, QFrame, QLabel, QHBoxLayout, ...)?

Ответы

▲ 1

Наследование делается так:

class baseA:
  a=1

class baseB:
  b=2

class Common:
  c=3

class A(Common, baseA):
  pass


class B(Common, baseB):
  pass

Класс A будет содержать a и c. B - b и c. Методы переписывать нужно только те что переопределяются. Чтоб склеить 2 класса достаточно слова pass - пропустить определения.