Xandr24
@Xandr24
учиться и еще раз учиться

Почему не работает super, чтобы взять метод из второго родителя?

Добрый день всем!
Не могу понять что делаю не так, чтобы взять метод, который есть в двух родителях из второго родителя
class A():
    def hi(self):
        print("привет А")

class B():
    def hi(self):
        print("привет Б")

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

res = C()
res.hi()

Подскажите пожалуйста, как взять от второго родителя метод hi()?
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Первым аргуменом super нужно передавать класс C, а в третьем питоне вообще ничего не нужно передавать.
Вызовите нужный метод нужного предка явно, если вам так уж нужно:
class C(A, B):
    def hi(self):
        B.hi(self)

Но если вам это нужно, значит вы где-то ошиблись в архитектуре, в дизайне классов и методов. Вы явно не ак поняли принципы ООП.
Расскажите подробно для чего вам такое нужно, и вам здесь наверняка подскажут как сделать правильно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы