[TOC] <br/><br/><br/> # <b style="color:#4F4F4F;">简介说明</b> 原文链接: - [abc](https://docs.python.org/zh-cn/3.9/library/abc.html#module-abc) ``` 版本:abc 作用:Abstract Base Classes在代码中定义和使用抽象基类进行API检查 ``` <br/> # <b style="color:#4F4F4F;">abc</b> <br/> # <span style="color:#619BE4">*@abstractmethod</span> ***** 声明抽象方法 <br/> # <span style="color:#619BE4">*get_cache_token()</span> ***** 返回当前抽象基类的缓存令牌 <br/> # <b style="color:#4F4F4F;">abc.ABCMeta</b> <br/> # <span style="color:#619BE4">[new]-ABCMeta()</span> ***** 设置类的metaclass <br/> ### 示例内容 <span style="color:red;">1. 举例说明</span> ``` from abc import ABCMeta class MyABC(metaclass=ABCMeta): pass ``` <br/> # <b style="color:#4F4F4F;">abc.ABC</b> <br/> # <span style="color:#619BE4">[new]-ABC()</span> ***** 继承该类创建抽象类 <br/> ### 示例内容 <span style="color:red;">1. 举例说明</span> ``` 将“子类”注册为该抽象基类的“抽象子类” from abc import ABC class MyABC(ABC): pass MyABC.register(tuple) assert issubclass(tuple, MyABC) assert isinstance((), MyABC) ``` <br/> # <span style="color:#619BE4">register()</span> ***** 将“子类”注册为该抽象基类的“抽象子类” <br/> # <span style="color:#619BE4">\_\_subclasshook\_\_()</span> ***** 检查 subclass 是否是该抽象基类的子类 <br/> ### 示例内容 <span style="color:red;">1. 举例说明</span> ``` class Foo: def __getitem__(self, index): ... def __len__(self): ... def get_iterator(self): return iter(self) class MyIterable(ABC): @abstractmethod def __iter__(self): while False: yield None def get_iterator(self): return self.__iter__() @classmethod def __subclasshook__(cls, C): if cls is MyIterable: if any("__iter__" in B.__dict__ for B in C.__mro__): return True return NotImplemented MyIterable.register(Foo) ``` <br/> # <span style="color:#619BE4">\_\_subclasses\_\_()</span> ***** 通过基类找出所有的具体类 <br/>