[Python]super()で親クラスのメソッドを呼び出す

python

Pythonのクラスではsuper()を使うことで親クラスのメソッドをそのまま呼び出すことができます。

そのsuper()について紹介。

子クラスがメソッドをオーバーライドすれば親クラスのメソッドは呼び出されない

Pythonのクラスには承継というものがあり、親クラスの全てを子クラスに受け継がせることができます。(値もメソッドも)

この時に、親クラスと同じ名前のメソッドを定義することでオーバーライド(上書き)することができ、親クラスのメソッドにプラスして新たに何かしらの処理を加えたりすることができます。

同時に上書きがされるということは、親クラスの該当のメソッドは呼び出されなくなります。

こういった時に使うのがsuper()です。

親クラスのメソッドをそのまま呼び出すsuper()

子クラスのオーバーライドしたメソッドで、親クラスのメソッドを呼び出してみます。

class Animal(object):
    def bark(self):
        print('bark something')

class Dog(Animal):
    def bark(self):
        print('bow wow')
        super().bark() # 親クラスのメソッドを呼び出す

dog = Dog()
dog.bark()

=>
bow wow
bark something

super()を使うことでオーバーライドされる前のメソッドを呼び出しています。



カテゴリー