當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python typing.runtime_checkable用法及代碼示例


用法:

@typing.runtime_checkable

將協議類標記為運行時協議。

這種協議可以與 isinstance()issubclass() 一起使用。當應用於非協議類時,這會引發 TypeError。這允許 simple-minded 結構檢查,非常類似於 collections.abc 中的 “one trick ponies”,例如 Iterable 。例如:

@runtime_checkable
class Closable(Protocol):
    def close(self): ...

assert isinstance(open('/some/file'), Closable)

注意

runtime_checkable() 將隻檢查所需方法的存在,而不是它們的類型簽名。例如,ssl.SSLObject 是一個類,因此它通過了針對 Callableissubclass() 檢查。但是,ssl.SSLObject.__init__() 方法的存在隻是為了引發帶有更多信息的 TypeError,因此無法調用(實例化)ssl.SSLObject

3.8 版中的新函數。

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 typing.runtime_checkable。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。