HighwayToCode
@HighwayToCode
While Учусь do Туплю

Почему здесь не работает наследование?

Добрый день!

Подскажите, пожалуйста: почему здесь выдает ошибку, что "value" не объявлено?
Ведь "Child" является наследником класса "Base" и должен принимать все аргументы базового класса.

Код:

class Base:
    def method(self):
        value = 5 


class Child(Base):
    def method(self):
        print(value)

if __name__ == '__main__':
    obj_1 = Child()
    obj_1.method()


А если я ставлю "pass", то все работает гуд.

class Base:
    def method(self):
        value = 5
        print(value)


class Child(Base):
    pass

if __name__ == '__main__':
    obj_1 = Child()
    obj_1.method()


Дело в переопределении классов, верно?

Но если так, то почему он не ищет " value" в базовом классе?
  • Вопрос задан
  • 90 просмотров
Решения вопроса 2
@MechanicZelenyy
Подсказка, подумайте зачем вы пишете self в аргументах метода и зачем нужна функция super.
Ответ написан
kgb_zor
@kgb_zor
I need your traceback.
Да потому что ты value объявил в локальном методе.

Чтоб сделать так, как хочешь ты нужно использовать ___init___
И там объявить self.value = 5
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
longclaps
@longclaps
почему он не ищет " value" в базовом классе?

Пора тебе уже узнать о разнице между классом и экземпляром класса.
Ответ написан
Ваш ответ на вопрос

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

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