クラス変数とインスタンス変数は、Pythonのクラスにおいてデータを保持するための重要な要素です。継承を使うことで、親クラスのクラス変数とインスタンス変数を子クラスで利用することができます。ここでは、クラス変数とインスタンス変数の継承について学びます。
以下のサンプルコードでは、Animal
クラスを親クラスとして、Dog
クラスを子クラスとして定義します。この例では、クラス変数とインスタンス変数がどのように継承されるかを示します。
class Animal:
# クラス変数
species = "Animal"
def __init__(self, name):
# インスタンス変数
self.name = name
def display_info(self):
print(f"{self.species}: {self.name}")
class Dog(Animal):
# クラス変数をオーバーライド
species = "Dog"
def __init__(self, name, breed):
# 親クラスのコンストラクタを呼び出す
super().__init__(name)
# 子クラスのインスタンス変数
self.breed = breed
def display_info(self):
# 親クラスのメソッドを呼び出し
super().display_info()
print(f"Breed: {self.breed}")
# インスタンスを作成
animal = Animal("Generic Animal")
dog = Dog("Rex", "Golden Retriever")
# 情報を表示
animal.display_info()
dog.display_info()
# クラス変数の確認
print(f"Animal species: {Animal.species}")
print(f"Dog species: {Dog.species}")
species
というクラス変数を定義しています。すべての Animal
インスタンスはこの値を共有します。__init__
メソッドで、name
というインスタンス変数を初期化します。display_info
メソッドで、クラス変数とインスタンス変数の情報を表示します。
Dogクラス:
Animal
クラスを継承しています。species
クラス変数をオーバーライドして、Dog
クラス専用の値を設定しています。__init__
メソッドで、親クラスのコンストラクタを呼び出し (super().__init__(name)
)、さらに breed
というインスタンス変数を追加しています。display_info
メソッドで、親クラスの display_info
メソッドを呼び出し、さらに犬種の情報を表示しています。
インスタンスの作成と表示:
Animal
と Dog
のインスタンスを作成し、それぞれの情報を表示します。クラス変数とインスタンス変数の継承を理解することで、オブジェクト指向プログラミングの基本的なコンセプトをより深く理解できます。継承を使うことで、コードの再利用が促進され、クラス間の関係を明確にすることができます。