|> Weeeeeeb

どんどんドーナツどーんと行こう!(10万円山さん)

Pythonでポリモーフィズム

Pythonポリモーフィズムを使いたくてインターフェースを探したがまさかのなし。 スクリプト初心者はびっくり。さらにググります。

でもpython3系からは抽象クラスを表現できるとのことで頑張ってみることに 結局ベースとなるクラスを抽象クラスとしてポリモーフィズムを利用した

備忘録

  1. 抽象クラス 抽象クラスを定義する際は下記を定義し、
    クラス名の後にmetaclass=ABCMetaと記述(abstractmethodは適宜追加のこと)

    from abc import ABCMeta, abstractmethod

  2. 抽象メソッド 抽象メソッドは定義するメソッドの上に@abstractmethodを記述

  3. 静的メソッド 余談では有りますが、Pythonでは静的メソッドに対して
    @staticmethodを記述することで、そのメソッドは静的メソッドとなります

  4. 組み合わせ 抽象メソッド・静的メソッドを組み合わせる場合はアノテーションを繰り返すせばよい

以上のことを踏まえて簡単に抽象クラスと継承クラスを記述しました
(該当箇所に#で番号を振ってあります)

   # 1.
  from abc import ABCMeta, abstractmethod

  class BasePush(metaclass=ABCMeta):
      @staticmethod
      @abstractmethod # 2, 4.
      def push(msg):
          pass

  class Push(BasePush):
      @staticmethod # 3.
      def push(msg):
          # 送信処理