Python 的 typing.Protocol 怎麼使用?
Python 3.8 之後 typing 模組 新增 1 個 typing.Protocol 的 class 可以使用,這個 class 很適合用來給一些有實作特定方法的 class 們做 type annotation 。
舉個常見的交通工具作為例子,假設我們有 1 個函數接受任何有實作 move()
方法的 instance:
def move(x):
x.move()
這時候可以用 typing.Protocol 將參數 x
加上 1 個 type hint, 讓彼此知道此處不管型別,只管是否有實作 move()
方法:
from typing import Protocol
class Movable(Protocol):
def move(self):
...
def move(x: Movable):
x.move()
加上 typing.Protocol 是否看起來清晰很多?
Posted on Sep 25, 2023 in Python 程式設計 - 中階 by Amo Chen ‐ 4 min read