入出力・エラーと例外・クラス・標準ライブラリ・対話環境(7,8,9,10,14章)
次のように定義されたクラスがある。 class Animal: def __init__(self, name): self.name = name class Dog(Animal): def __init__(self, name, breed): self.breed = breed d = Dog("Pochi", "Shiba") print(d.name) このコードを実行するとどうなるか。
- A"Pochi" と出力される
- B"Shiba" と出力される
- ✓AttributeErrorが発生する
- DTypeErrorが発生する
解説
Dogクラスの__init__でsuper().__init__(name)を呼び出していないため、親クラスAnimalのname属性が設定されず、d.nameへのアクセス時にAttributeErrorが発生する。
根拠Pythonチュートリアル9章 クラス(継承とsuper()による親クラスの初期化)