親クラスのクラスを定義しその中のメソッドをサブクラスのクラスで再定義したプログラムを作ってみます。
■Python
Google Colaboratory(Google Colab),2023年3月18日時点ではPython 3.9.16が用いられる。
■親クラスのクラスを定義しその中のメソッドをサブクラスのクラスで再定義する
では、早速親クラスのクラスを定義しその中のメソッドをサブクラスのクラスで再定義するため、コードを書いていきます。
■コード
class Animal: def make_sound(self): return "動物の鳴き声" class Dog(Animal): def make_sound(self): return "ワンワン!" dog = Dog() print(dog.make_sound())
Animalというオブジェクトを作成するためのテンプレート(設計図)であるクラスを定義します。定義後、クラス内にdef文を用いてmake_sound()というメソッドを定義します。括弧内には、メソッドで渡される最初の引数,パラメータは、インスタンス(作成されたオブジェクト)自体でなければならないため、「self(自己)」と記述し、最初の引数として渡します。このメソッドが呼び出された時に、実行される処理としては、returnとして「動物の鳴き声」という文字列を返すものになります。
次に、Dogというオブジェクトを作成するためのテンプレート(設計図)であるクラスを定義します。定義後、括弧内に引数,パラメータとしてAnimalというクラスを渡します。これでAnimalというクラスが継承されます。その後、Dogというクラス内にdef文を用いてmake_sound()というメソッドを定義します。括弧内には、メソッドで渡される最初の引数,パラメータは、インスタンス(作成されたオブジェクト)自体でなければならないため、「self(自己)」と記述し、最初の引数として渡します。このメソッドが呼び出された時に、実行される処理としては、先ほどのAnimalというクラス内で定義したメソッドの処理とは異なり、returnとして「ワンワン!」という文字列を返すものになります。
メソッドを定義後、dogという変数を用意し、その中にそれぞれDog()を格納し、インスタンス化を行います。インスタンス化によりオブジェクトが作成されたことで、クラス内にアクセスできるようになりました。
最後にprint()を用いて作成されたdogというオブジェクトに対してドット演算子( . )を用いてmake_sound()というメソッドにアクセスし、メソッドを呼び出してみます。
■実行・検証
このコード(セル)を保存し、Google Colaboratory上で、セルを実行してみます。
実行してみると、親クラスであるAnimalというクラスを定義し、その中のメソッドをサブクラスであるdogというクラス内でメソッドを再定義し、作成したオブジェクトから再定義したメソッドにアクセスし、メソッドを呼び出す。呼び出した結果、再定義されたメソッドが呼び出され処理が実行し、結果が返され、print()で出力されることを確認した。
なお、親クラスであるAnimalというクラスを定義し、その中でメソッドを定義し、Animalを用いて作成したanimalというオブジェクトから、定義したメソッドを呼び出すと上記のような結果となる。
コメント