Pythonの親クラスのinitメソッドを理解しよう

Pythonのクラスとは何か

Pythonにおいて、クラスとはオブジェクト指向プログラミングにおける概念の一つです。クラスは、同じ属性やメソッドを持つオブジェクトを生成するための設計図のようなものです。

Pythonのinitメソッドとは何か

Pythonのクラスには、オブジェクトを生成する際に実行される特殊なメソッドがあります。その一つが、__init__メソッドです。このメソッドは、オブジェクトを生成するときに自動的に呼び出されます。

class MyClass:
    def __init__(self, arg1, arg2):
        self.arg1 = arg1
        self.arg2 = arg2

上記のように、__init__メソッドは、selfという引数を持ち、その引数を介して、オブジェクトに属性を与えることができます。

親クラスとは何か

親クラスとは、継承関係にあるクラスのうち、より一般的なクラスのことを指します。継承関係においては、子クラスは親クラスの属性やメソッドを引き継ぐことができます。

class MyParentClass:
    def __init__(self, arg1, arg2):
        self.arg1 = arg1
        self.arg2 = arg2
        
class MyChildClass(MyParentClass):
    def __init__(self, arg1, arg2, arg3):
        super().__init__(arg1, arg2)
        self.arg3 = arg3

上記の例では、MyChildClassMyParentClassを継承しています。そして、MyChildClass__init__メソッドの中で、親クラスの__init__メソッドを呼び出すことができます。

親クラスのinitメソッドの役割

親クラスの__init__メソッドは、子クラスに継承された際に、子クラスのオブジェクトに対して親クラスの属性を与える役割があります。また、子クラスの__init__メソッドが実行される際に、親クラスの__init__メソッドも実行されます。

親クラスのinitメソッドの呼び出し方

親クラスの__init__メソッドを呼び出すには、super()を使用します。具体的には、super().__init__()のように書きます。

親クラスのinitメソッドの活用例

以下は、親クラスの__init__メソッドを活用した例です。

class Animal:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
class Dog(Animal):
    def __init__(self, name, age, breed):
        super().__init__(name, age)
        self.breed = breed
        
dog1 = Dog("ポチ", 3, "柴犬")
print(dog1.name)
print(dog1.age)
print(dog1.breed)

上記の例では、Animalクラスを定義し、DogクラスをAnimalクラスを継承して定義しています。そして、Dogクラスの__init__メソッドの中で、親クラスの__init__メソッドを呼び出しています。最後に、dog1オブジェクトを生成し、その属性を表示しています。

まとめ

Pythonの親クラスの__init__メソッドは、子クラスに継承された際に、子クラスのオブジェクトに対して親クラスの属性を与える役割があります。親クラスの__init__メソッドは、super()を使用して呼び出すことができます。