Awaitable

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]