Python | ポリモーフィズムの使い方

2021年6月6日

公開日:2021/6/6

Pythonでは,いくつかのクラスを作成する場合,各々のクラスで共通した名前のメソッドを利用することができる.これをポリモーフィズムと呼ぶ.同じ名前のメソッドを利用すると,プログラム全体が分かりやすくなる.以下にポリモーフィズムの使い方を記す.

◆実施環境

Python 3.8.8

■ポリモーフィズムを利用した基本構文

“abc"から"abstractmethod"と"ABCMeta"をimportする.親クラスを定義し,"()"に"metaclass=ABCMeta"を入力する."@abstractmethod"というデコレータを用いる場合,インスタンスメソッド(今回はcall)とpassを記載する.子クラスでは親クラスを継承し,メソッドの"call"をオーバーライドする.

# 1の処理
from abc import abstractmethod, ABCMeta

class Bird(metaclass=ABCMeta): # 親クラス

  def __init__(self,name):
    self.name = name

  @abstractmethod # 抽象基底メソッド
  def call(self):
    pass

  def introduction(self): # 共通メソッド
    print(self.name)

class Crow(Bird): # 親クラス名を継承

  def call(self):
    print(f'This is crow and name is {self.name}')

class Sparrow(Bird):  # 親クラス名を継承

  def call(self):
    print(f'This is sparrow and name is {self.name}')

obj_crow = Crow('Kataro')
obj_crow.call()

obj_spar = Sparrow('Chuntaro')
obj_spar.call()

■実行結果

# 1の結果
This is crow and name is Kataro

This is sparrow and name is Chuntaro

以上