← クエスト一覧

クエスト41:super()を使おう

スライド 1 / 5
コーデ
💻 コード例
実行結果
← クエスト一覧
🐍 Python / Quest 41 / 85

クエスト41:super()を使おう

発展 +10 XP
🏠
今回の課題
Dog の __init__ で親の初期化を呼んで名前を引き継ぎ、犬種(breed)も持たせて「ポチ(柴犬)」と表示しよう。
📖 解説を見る
🔗 super()って何?

super() を使うと、子クラスの中から親クラスのメソッドを呼び出せます。親の初期化を再利用しつつ、子で新しい属性を足せます。

✏️ 書き方:
class Vehicle:
    def __init__(self, wheels):
        self.wheels = wheels

class Car(Vehicle):
    def __init__(self, wheels, brand):
        super().__init__(wheels) ← 親の __init__ を呼ぶ
        self.brand = brand

super().__init__() には、親が必要としている引数だけを渡します。

📋 作るもの:
Dog__init__(引数は namebreed)の中身を書く
・親(Animal)の初期化を呼んで、name を引き継がせる
・そのあと、犬種を self.breed として自分に持たせる
・下の infoself.nameself.breed の両方を使うので、2つとも必要

💡 どこで使う?

親の初期化処理(名前をセットするなど)をコピペせず再利用しつつ、子だけの情報を足したいときに使います。DjangoやTkinterなどのフレームワークでは、用意されたクラスを継承して super().__init__() を呼ぶのが定番の作法です。

⚠️ ポイント:
super().__init__() で親クラスの初期化を実行できる
・そのあとに子クラス独自の属性(self.breed など)を追加する
ヒントを見る
親の初期化は super().__init__(...) で呼べるよ。カッコの中には、親が受け取る引数だけを渡そう。そのあとに子だけの属性を self. に代入する。
期待する出力
ポチ(柴犬)
📄 見本
「答えを見る」を押すと、お手本のコードが出ます。クリックでコピーできます。
💻 コードエディタ
実行すると結果がここに表示されます
正解!見本と同じになりました。
次へ →
🏠 ホームへ

れんしゅうもんだい

☑ 0 / 3 正解 レッスンに戻る

全問正解でクエストクリア!

未挑戦

問題 1: Car(Vehicle)クラスでsuper().__init__(brand)を使って「トヨタ:プリウス」と表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
トヨタ:プリウス
未挑戦

問題 2: 親のgreet()をsuper()で呼び出して、さらに独自のメッセージも表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
こんにちは! 生徒です。
未挑戦

問題 3: Hero(Character)でsuper()を使ってhpとmpを持つキャラを作り、ステータスを表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
たろう HP:100 MP:50
コピーしました!