
36歳が初めてプログラムを勉強してみる(27日目)
今日もpaizaでPythonの勉強しました。
今日学んだことです。
【学んだこと】
・メソッドのオーバーライドを学んだ
次のようなことをやりました。
【やったこと】
●メソッドのオーバーライドを学んだ
今回はクラス継承を使っている時に利用できる、メソッドのオーバーライドについて学びました。
オーバーライドとはスーパークラスのメソッドと同じ名前をサブクラスで再定義することです。
分かりやすく言うと、スーパークラスに「習慣」というメソッドがあるとします。
そして、サブクラスでも同じように「習慣」メソッドを定義して使うことができるようになります。
【クラス継承方法】
class スーパークラス名:
def __init__(self):
self.変数1= "文字列1"
self.変数2= "文字列2"
def メソッド名1(self):
print(self.文字列1+ " " + self.文字列2)
class サブクラス名(スーパークラス名):
def メソッド名2(self, 変数3):
print(self.文字列1+ " " + 変数3)
オブジェクト名= サブクラス名()
オブジェクト名.メソッド名2("文字列3")
それでは実際のコードを見ていきましょう。
--コード--
class Routine:
def __init__(self):
self.msg = "hello"
self.routine = "routine"
def say_routine(self):
print(self.msg + " " + self.routine)
class Shukan(Routine):
def say_routine(self, shukan):
print(self.msg + " " + shukan)
shukan= Shukan()
shukan.say_routine("習慣")
--出力結果--
hello 習慣
このコードでは、スーパークラスとして「Routine」を作っています。
Routineクラスの中には、helloという文字列の入った「msg」変数とroutineという文字列の入った「routine」変数を作成しています。
そして、「sa-_routine」メソッドを作成し、その中でprint関数で「msg」と「kintore」変数を出力しています。
次にサブクラスとして「Shukan」を作っています。
サブクラスでは、スーパークラスの「say_routine」をオーバーライドするため、同じ名前のメソッドを作成し、引数に「shukan」を追加してprint関数で、スーパークラスの変数「msg」と、オーバーライドした「shukan」を出力しています。
そして、サブクラスの「Shukan」から、「shukan」オブジェクトを作成し、「say_routine」メソッドに「習慣」という引数をつけて呼び出しました。
その結果、スーパークラスの「hello」とサブクラスでオーバーライドした「習慣」が出力されていますい。
このように、オーバーライドを使うことによって、サブクラスからスーパークラスのメソッドを再定義することができます。
本日はここまでです。
以上です。ありがとうございました。