@reus

Вернуть переопределенный метод?

В общем возникла такая ситуация.
В одном из классов (а точнее в модели) какой-то прекрасный человек переопределил стандартный метод и теперь он не работает. Другими словами мне нужно унаследовать классом 3 - всё из класса 2, а нужный метод из класса 1. Как это сделать?
Как я понимаю это по идее делается с помощью super...
  • Вопрос задан
  • 248 просмотров
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Переопределить нужный метод самому? Для одного-двух методов может и подойти, при условии что вы уверены, что методы Class1 будут корректно работать с инстансами вашего класса.
def __methodname__(self, *args, **kwargs):
    return Class1.__methodname__(self, *args, **kwargs)

Это, конечно, хак... но с другой стороны, вы явно задаёте желаемое поведение от общего предка, так что новых неявных зависимостей по идее не возникает.
Ответ написан
Комментировать
sanya84
@sanya84
Фанатик Python 3
Попробуйте вот этот вариант:
class X:
    def __init__(self):
        print("Я класс X у меня есть метод:")
        self.x()
    def x(self):
        print("self.x")

class Y:
    def __init__(self):
        print("Я класс Y у меня есть метод:")
        self.y()
    def y(self):
        print("self.y")    

class Z(X,Y):
    def __init__(self):
        print("Я класс Z у меня есть методы:")
        
        self.z()
        self.y()
        self.x()
        
    def z(self):
        print("self.z")


if __name__=="__main__":
    z=Z()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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