EvilsInterrupt
@EvilsInterrupt
System programming, Reversing Engineering, C++

Правильно ли что вызов в init дочернего класса init из базового опционален?

Допустим есть код:

class Base:
   def __init__(self):
      pass

class Child(Base):
   def __init__(self):
      super().init() # Это опционально?


По поводу этого простейшего куска кода есть вопросы:
1. Правда ли что вызов если не написать в дочернем __init__(self) вызов __init__(self) из базового, то он вызовется автоматически?
2. Если __init__ дочернего имеет больше одного аргумента __init__(self, message) то надо ли будет ли автоматически вызван __init__(self) из базового ?

P.S.: Извините, но пока чтение стандартной документации не дало ответы на эти вопросы.

UPD:
Пока нашел только тему на stackoverflow, но и она не дает внятного ответа!
  • Вопрос задан
  • 2429 просмотров
Решения вопроса 1
bobrovskyserg
@bobrovskyserg
class Base:
    def __init__(self):
        self.testfield = 'testfield'


class Child(Base):
    def __init__(self):
        super().__init__()  # рискни это закомментировать
        pass


a = Child()
print(a.testfield)

К вопросу о списке аргументов конструктора:
class Base(list):
    def __init__(self):
        self.testfield = 'testfield'


class Child(Base):
    def __init__(self, aname):
        super().__init__()
        self.name = aname


a = Child('lala')
print(a)
print(a.name)


Метод тыка рулит.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект