В Python 2.6 и выше вы можете использовать модуль abc , чтобы сделать Base
«фактически» абстрактным базовым классом:
import abc
class Base:
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def g(self):
pass
def f(self): # &c
это гарантирует, что Base
не может быть создан - и любой подкласс, который не может переопределить g
- при достижении цели @ Aaron по разрешению подклассам использовать super
в их реализациях g
. В целом, это гораздо лучшее решение, чем у нас было в Python 2.5 и более ранних версиях!
Примечание: наличие наследования Base от объекта было бы излишним, поскольку в любом случае метакласс должен быть установлен явно.