Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
class Animal:
def __init__(self, name):
self.name, self.sound = name, "hum"
class Dog(Animal):
def __init__(self, name):
super().__init__(name)
self.sound = "woof"
print(Dog("Rex").name, Dog("Rex").sound)Rex woof
- Ждать
Rex hum, будто побеждает значение родителя: сначалаsuper().__init__(name)ставитhum, а следующая строкаDog.__init__заменяет его наwoof. - Ждать
AttributeErrorдляname, будтоDogтеряет настройку родителя:super().__init__(name)запускаетAnimal.__init__, и тот задаётself.name.
- Что даст
Dog("Rex").name, если убрать строкуsuper().__init__(name)? - Чему будет равен
.sound, еслиDog.__init__задаст его до вызоваsuper().__init__(name)?