От http://docs.sqlalchemy.org/en/improve_toc/orm/extensions/declarative/mixins.html#augmenting-the-base Я вижу, что вы можете определять методы и атрибуты в базовом классе.Определение абстрактного метода в базовом классе SQLAlchemy
Я хотел бы убедиться, что все дочерние классы реализуют определенный метод. Однако при попытке определить абстрактный метод следующим образом:
import abc
from sqlalchemy.ext.declarative import declarative_base
class Base(metaclass=abc.ABCMeta):
@abc.abstractmethod
def implement_me(self):
pass
Base = declarative_base(cls=Base)
class Child(Base):
__tablename__ = 'child'
Я получаю ошибку TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
Я пытался найти документацию или примеры, чтобы помочь мне, но подошел короткий.
Это, кажется, работает до сих пор с одним незначительным дополнением: мне пришлось установить '__abstract__ = True' в' Base'. Спасибо за вашу помощь! – user1475412