環境
- Windows 10
- Python 3.10.1
結論
- pythonはバージョン3で抽象基底クラス(ABC: Abstract Base Class)というものをサポートするようになったので、そちらを使用する
- 上記により、インターフェースに定義された抽象メソッドが、実装クラスに定義されていない場合は、エラー(TypeError: Can't instantiate abstract class ClassName with abstract method method_name)を吐くようになる
実装
インターフェース
- @abstractmethodには実装クラスに必ず定義させたいメソッドを記述する
- 抽象メソッドなので、中身の処理自体にはpassを記述する
shared\Domain\i_xweb_element.py
from abc import *
# インターフェース
class IXWebElement(metaclass=ABCMeta):
@abstractmethod
def get_element(self):
pass
実装クラス
- 実装クラスの引数に作成したインターフェースを渡す
- 今回のケースでは、get_elementメソッドが必須なので、定義せずにこのクラスのインスタンスを生成するとエラーが生じる
shared\Domain\xweb_element.py
from shared.Domain.i_xweb_element import IXWebElement
class XWebElement(IXWebElement):
def __init__(self, key, element, value):
self.key = key
self.element = element
self.value = value
def get_key(self):
return self.key
# def get_element(self):
# return self.element
def get_value(self):
return self.value
以上です
まとめ
いかがでしたでしょうか。本記事では、PythonでInterface用のクラスを作成する方法について紹介しています。ぜひ参考にしてみてください