Awaitable
#
from abc import ABCMeta, abstractmethod
from _collections_abc import _check_methods, GenericAlias, Awaitable
class Awaitable(metaclass=ABCMeta):
__slots__ = () # 限制了该类的实例只能拥有指定的属性,这里定义为空元组,表示不允许添加任何新的实例属性。
@abstractmethod
def __await__(self):
# 要求所有子类必须实现这个方法
yield
@classmethod
def __subclasshook__(cls, C):
if cls is Awaitable:
# 检查某个类是否实现了特定的方法 __await__
return _check_methods(C, "__await__")
return NotImplemented
__class_getitem__ = classmethod(GenericAlias) # 用于支持泛型类型提示,比如 Awaitable[int]
Awaitable[int]
__main__.Awaitable[int]