Menu
Coddy logo textTech

継承の基本

CoddyのPythonジャーニー「Object Oriented Programming」セクションの一部 — レッスン 17/64。

継承は、あるクラスが別のクラスから属性やメソッドを継承することを可能にし、親子関係を作成します。

親クラスの例を次に示します:

class Animal:
    def __init__(self, name):
        self.name = name
    
    def info(self):
        print(f"I am {self.name}, an animal")

親クラスから継承する子クラスを作成します:

class Dog(Animal):
    pass  # Animalからすべてを継承します

構文 class Dog(Animal): は、DogがAnimalを継承していることを意味します。親クラス名を括弧内に記述します。

両方のクラスからオブジェクトを作成します:

generic_animal = Animal("Creature")
buddy = Dog("Buddy")

継承されたメソッドを使用します:

generic_animal.info()
buddy.info()

出力:

I am Creature, an animal
I am Buddy, an animal

Dog は __init__info を定義していませんが、Animal から自動的にそれらを引き継ぎます。

子クラスに新しいメソッドを追加できます:

class Dog(Animal):
    def bark(self):
        print(f"{self.name} says Woof!")

buddy = Dog("Buddy")
buddy.info()  # 継承されたメソッド
buddy.bark()  # 新しいメソッド

出力:

I am Buddy, an animal
Buddy says Woof!

重要ポイント: 子クラスは、親クラスからすべての属性とメソッドを継承します。継承を作成するには、class Child(Parent): 構文を使用します。これにより、コードを再利用し、論理的なクラス階層を作成するのに役立ちます。

challenge icon

チャレンジ

中級
  • vehicle.py: 親クラスである Vehicle クラスが含まれています
  • car.py: Vehicle を継承する Car クラスが含まれています
  • driver.py: 実装をテストするためのメインファイルです

各ファイルには、実装をガイドするための詳細な TODO コメントが含まれています。以下の作業を行う必要があります:

  • makemodel 属性を持つ Vehicle クラスを完成させる
  • Car クラスで適切なクラス継承を実装する
  • ファイル間で正しいインポート文を設定する
  • driver ファイルでオブジェクトを作成し、テストする

TODO コメントは解決策へのステップバイステップのガイダンスを提供しているため、注意深く従ってください。

チートシート

継承を使用すると、class Child(Parent): 構文を使用して、あるクラスが別のクラスから属性とメソッドを継承できます。

class Animal:
    def __init__(self, name):
        self.name = name
    
    def info(self):
        print(f"I am {self.name}, an animal")

class Dog(Animal):
    pass  # Animalからすべてを継承します

子クラスは、親のすべてのメソッドと属性を自動的に継承します。

buddy = Dog("Buddy")
buddy.info()  # 継承されたメソッドを使用します
# Output: I am Buddy, an animal

継承された機能を維持しながら、子クラスに新しいメソッドを追加します。

class Dog(Animal):
    def bark(self):
        print(f"{self.name} says Woof!")

buddy = Dog("Buddy")
buddy.info()  # 継承されたメソッド
buddy.bark()  # 新しいメソッド

自分で試してみよう

# TODO: vehicle.pyからVehicleクラスをインポートする
# TODO: car.pyからCarクラスをインポートする

# TODO: メーカーが"Toyota"、モデルが"Corolla"のVehicleオブジェクトを作成する
vehicle = None

# TODO: メーカーが"Honda"、モデルが"Civic"のCarオブジェクトを作成する
car = None

# TODO: vehicleオブジェクトのdisplay_info()メソッドを呼び出す
# 期待される出力: "Vehicle: Toyota Corolla"

# TODO: carオブジェクトのdisplay_info()メソッドを呼び出す
# 期待される出力: "Vehicle: Honda Civic"
# 注: Carは変更なしでVehicleからdisplay_infoを継承します
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Object Oriented Programmingのすべてのレッスン