170 похожих чатов

Народ, в очередной раз туплю, как именно нарыть нужную инфу.



У меня класс со множественным наследованием. Как в конструкторе вызвать конструкторы всех родительских классов? Помню, что что-то наподобие такого:

class A:
pass

class B:
pass

class C(A, B):
def __init__(self):
super(A).__init__()
super(B).__init__()

Но так оно выдает ошибку, что __init__ получает не те аргументы. Накиньте плз раздел доки или статью, где про такое написано? Сам в гугле не осилил это отыскать

12 ответов

5 просмотров

Если у тебя множественное наследование и несколько инитов с параметрами лучше не использовать множественное наследование

https://www.youtube.com/watch?v=X1PQ7zzltz4 авось поможет разобраться в теме

https://pastebin.com/LiqW9Zih

Tom-Cauf Автор вопроса
Alex
https://pastebin.com/LiqW9Zih

Спасибо, буду думать

Tom-Cauf Автор вопроса
Alex
Если у тебя множественное наследование и несколько...

Не получится так. Для модели нужно использовать базовую модель и пару миксинов со своими параметрами. Понимаю, что говно, но деваться походу некуда. Не переписывать же миксины с нуля в класс

Tom Cauf
Не получится так. Для модели нужно использовать ба...

Такое условно решалось с помощью *args, **kwargs, чтобы разные базовые классы выбирали то что нужно им и отдавали остальное дальше. Вызывать два отдельных супера как правило не стоит.

Tom-Cauf Автор вопроса
evle
Такое условно решалось с помощью *args, **kwargs, ...

Да про кваргсы - это понятно. Я в суперах запутался

Tom Cauf
Да про кваргсы - это понятно. Я в суперах запуталс...

Ну, в миксине принимай аргс, кваргс, выкусывай то что нужно миксину и остальное суй в вызов super. Предполагается, что забота миксина — не разломать логику класса, к которому он примешивается, поэтому он вызывается первым в цепочке. Но вообще это достаточно проклятое решение. По возможности, старайтесь избегать этого.

Tom-Cauf Автор вопроса
evle
Ну, в миксине принимай аргс, кваргс, выкусывай то ...

Не получится. Есть явные куски функционала, которые шарятся между разными классами. Как это без миксино делать - хз

Tom Cauf
Не получится. Есть явные куски функционала, которы...

Нормальной архитектурой сделать. Миксин — штука в принципе достаточно спорная и необязательная, чаще вообще признак внезапных или временных костылей, а не чего-то заранее продуманное. Бывают, конечно, решения, которые изначально на них завязаны, но чаще всего это больно.

Tom-Cauf Автор вопроса

Я хз как это архитектурно решить без миксинов. Там реально эталонный случай для них. Куча классов с разными общими кусками функционала и атрибутов

Tom Cauf
Я хз как это архитектурно решить без миксинов. Там...

Общие куски функциональности признак того, что их надо куда-то делегировать. Но пока слишком абстрактно, чтобы понять, куда именно.

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта