У меня класс со множественным наследованием. Как в конструкторе вызвать конструкторы всех родительских классов? Помню, что что-то наподобие такого:
class A:
pass
class B:
pass
class C(A, B):
def __init__(self):
super(A).__init__()
super(B).__init__()
Но так оно выдает ошибку, что __init__ получает не те аргументы. Накиньте плз раздел доки или статью, где про такое написано? Сам в гугле не осилил это отыскать
Если у тебя множественное наследование и несколько инитов с параметрами лучше не использовать множественное наследование
https://www.youtube.com/watch?v=X1PQ7zzltz4 авось поможет разобраться в теме
https://pastebin.com/LiqW9Zih
Спасибо, буду думать
Не получится так. Для модели нужно использовать базовую модель и пару миксинов со своими параметрами. Понимаю, что говно, но деваться походу некуда. Не переписывать же миксины с нуля в класс
Такое условно решалось с помощью *args, **kwargs, чтобы разные базовые классы выбирали то что нужно им и отдавали остальное дальше. Вызывать два отдельных супера как правило не стоит.
Да про кваргсы - это понятно. Я в суперах запутался
Ну, в миксине принимай аргс, кваргс, выкусывай то что нужно миксину и остальное суй в вызов super. Предполагается, что забота миксина — не разломать логику класса, к которому он примешивается, поэтому он вызывается первым в цепочке. Но вообще это достаточно проклятое решение. По возможности, старайтесь избегать этого.
Не получится. Есть явные куски функционала, которые шарятся между разными классами. Как это без миксино делать - хз
Нормальной архитектурой сделать. Миксин — штука в принципе достаточно спорная и необязательная, чаще вообще признак внезапных или временных костылей, а не чего-то заранее продуманное. Бывают, конечно, решения, которые изначально на них завязаны, но чаще всего это больно.
Я хз как это архитектурно решить без миксинов. Там реально эталонный случай для них. Куча классов с разными общими кусками функционала и атрибутов
Общие куски функциональности признак того, что их надо куда-то делегировать. Но пока слишком абстрактно, чтобы понять, куда именно.
Обсуждают сегодня