問題一覧に戻る
上級高度なパターン
問題112: プロトコル
プロトコル(Python 3.8以降)は、typing.Protocolを使って構造的部分型を定義します。特定のメソッドを持つオブジェクトを表現でき、明示的な継承なしに型チェックが可能です。これにより、ダックタイピングに型安全性を加えることができ、より柔軟な設計が可能になります。
# プロトコル
from typing import
# プロトコルを定義
class Drawable():
def draw(self) -> str:
...
# プロトコルを実装
class Circle:
def (self) -> str:
return "Drawing a circle"
class Square:
def (self) -> str:
return "Drawing a square"
# プロトコルを使用
def render(shape: Drawable) -> None:
print(shape.draw())
render(Circle())
render(Square())