Pythonのsuper関数とは
Pythonのsuper関数は、基本的には親クラスの属性やメソッドにアクセスするために使用されます。これは特にオーバーライドされたメソッドで親クラスのメソッドを呼び出す場合に便利です。
具体的には、以下のように使います。
サルモリ
ここからが本番だ!コードを見てみよう!
ソースコード例1
1 2 3 4 5 6 7 8 9 10 11 |
class ParentClass(): def test(self): print("Parent class method") class ChildClass(ParentClass): def test(self): super().test() print("Child class method") obj = ChildClass() obj.test() |
出力結果
Parent class method
Child class method
サルモリ
なるほど!親クラスのメソッドを使いつつ、子クラスでそれを拡張してるんだね!
super関数の特性
super関数のもう一つの重要な特性は、Pythonのメソッド解決順序(MRO)に基づいて、親クラスを選択するということです。これは多重継承が行われる場合に特に重要となります。
以下に、多重継承とsuper関数を組み合わせた例を示します。
サルモリ
今度はちょっと複雑な例だけど、ちゃんと追っていこう!
ソースコード例2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class Parent1(): def test(self): print("Parent1's method") class Parent2(): def test(self): print("Parent2's method") class Child(Parent1, Parent2): def test(self): super().test() obj = Child() obj.test() |
出力結果
Parent1's method
サルモリ
ほう、親クラスが2つある場合は、一番最初に指定したクラスのメソッドが使われるんだね!
super関数の引数
super関数には2つの引数を指定することが可能です。
それは以下のように指定されます。
サルモリ
次の例も頑張って追いかけてみよう!
ソースコード例3
1 2 3 4 5 6 7 8 9 10 11 |
class Parent(): def test(self): print("Parent's method") class Child(Parent): def test(self): super(Child, self).test() print("Child's method") obj = Child() obj.test() |
出力結果
Parent's method
Child's method
サルモリ
super関数に引数を指定すると、更に具体的にどの親クラスのメソッドを使うかを指定できるんだね!
super関数の注意点
super関数を使う際には、以下のような注意点があります。
1. クラスがobjectクラスを継承していないと、super関数はTypeErrorを発生させます。
2. super関数はインスタンスメソッドでしか使えません。クラスメソッドやスタティックメソッドでは使うことができません。
サルモリ
注意点もちゃんと覚えておこう!これでエラーになることを防げるぞ!
まとめ
今回は、Pythonのsuper関数の使い方について詳しく解説しました。super関数は、親クラスのメソッドを呼び出すための強力なツールであり、正しく理解し使えば、コードの再利用性を高めることが可能です。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!
サルモリ
最後まで読んでくれてありがとう!!