Как добавить в два разных класса одинаковый функионал, если множественное наследование не работает
Нужно получить 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 - пропустить определения.