当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。