ABC和OrderedDict的子类不能作为真正的抽象类:
>>> from abc import ABC, abstractmethod
>>> from collections import OrderedDict
>>> class AbstractOrderedDict(OrderedDict, ABC):
... @abstractmethod
... def abstract_method(self):
... pass
...
>>> AbstractOrderedDict()
AbstractOrderedDict()
人们会期望AbstractOrderedDict的实例化失败,对吧?
进一步的实验表明,子类object
和ABC
的实例化(显然)会在实例化时引发TypeError,但子类化其他任何基本类(dict,int,list等)却不会(的行为如上所述)。
问题: