Pythonのオーバーライドのサンプルです。
確認環境 ・Python 3 |
目次
サンプル | オーバーライドとは |
子クラスから親クラスのインスタンスを参照する(super) |
オーバーライドとは
- クラスを継承したときに使用できます。
- 親クラスで定義したメソッドを、子クラスで同じメソッド名を記述して処理内容を上書きすることです。
- オーバーライドするメソッドは、引数、戻り値の型が同じである必要はありません。Javaなどの言語と異なります。
→Pythonにはオーバーロードはありません。 - 以下は、Pythonの公式ドキュメントのクラスのリンクです。
https://docs.python.org/ja/3.6/tutorial/classes.html
オーバーライドのサンプルです。
# coding: utf-8
class Color1:
def getName1(self):
return "赤"
class Color2(Color1):
def getName1(self):
return "青"
c2 = Color2()
print(c2.getName1()) # 青
3~5行目は親クラスです。
7~9行目は子クラスです。
8行目がオーバーライドです。4行目とメソッド名が同じです。
13行目のメソッドの実行は、オーバーライドのため3行目の親クラスのメソッドではなく、7行目の子クラスのメソッドが実行されます。
子クラスから親クラスのインスタンスを参照する(super)
子クラスから親クラスのインスタンスを参照するサンプルです。
superを使用してオーバーライドした子クラスのメソッドから親クラスのメソッドを呼びます。
# coding: utf-8
class Color1:
def getName1(self):
return "赤"
class Color2(Color1):
def getName1(self):
print(super().getName1())
return "青"
c2 = Color2()
print(c2.getName1()) # 赤 青
8行目は、3行目のメソッドをオーバーライドしています。
9行目は、superを使用して親クラスのメソッドを呼んでいます。
14行目は、親クラスと子クラスのメソッドの実行結果が表示されます。
関連の記事