测试样本取自 <流畅的python>
- 先来了解抽象基类
import abc
class Tombole(abc.ABC):
@abc.abstractmethod
def pick(self):
'''
随机删除元素,然后将其返回
'''
@abc.abstractmethod
def load(self, iterable):
'''
从可迭代对象中添加元素
:param iterable:
:return:
'''
def inspect(self):
'''
:return:返回一个有序数组,有当前元素构成
'''
items = []
while True:
try:
items.append(self.pick())
except LookupError:
break
self.load(items)
return tuple(sorted(items))
def loaded(self):
return bool(self.inspect())
抽象基类自定义要继承 abc.ABC, 因为此模块中有 抽象基类注册的类属性.
@abc.abstractmethod 是注册抽象方法,不用实现方法,后续的子类会执行检查实现. 若没有实现则会报错, 可以与其他装饰器叠加,前提是 @abc.abstractmethod 必须在最内层
抽象类的意思本人理解是为 isinstance( ) issubclass(