Абстрактный подкласс OrderedDict?python3 - PullRequest
0 голосов
/ 21 октября 2018

Подкласс, который подклассы 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 и т. д.) нет (ведет себя так, как указано выше).

Вопросы:

  1. Почему он так себя ведет?
  2. Является ли теоретически плохой идеей сделать абстрактный подкласс OrderedDict (или других)?
    1. Почему?
    2. Альтернативы?
...