Задать вопрос
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" в базовом классе?
  • Вопрос задан
  • 115 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Инженер по тестированию
    5 месяцев
    Далее
  • Нетология
    Инженер по тестированию
    8 месяцев
    Далее
  • Stepik
    "Поколение Python": курс для начинающих
    1 неделя
    Далее
Решения вопроса 2
@MechanicZelenyy
Подсказка, подумайте зачем вы пишете self в аргументах метода и зачем нужна функция super.
Ответ написан
kgb_zor
@kgb_zor
I need your traceback.
Да потому что ты value объявил в локальном методе.

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

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

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

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