Python 使用ABC作为SQLAlchemy模型的基础
我想使用抽象基类作为SQLAlchemy模型的声明基类 以下列ABC为例:Python 使用ABC作为SQLAlchemy模型的基础,python,python-3.x,sqlalchemy,Python,Python 3.x,Sqlalchemy,我想使用抽象基类作为SQLAlchemy模型的声明基类 以下列ABC为例: from abc import ABCMeta, abstractmethod class DealMeta(ABCMeta): pass class DealBase(metaclass=DealMeta): """ """ def __init__(self, valuation_model): self.valuation_model = valuation_
from abc import ABCMeta, abstractmethod
class DealMeta(ABCMeta):
pass
class DealBase(metaclass=DealMeta):
"""
"""
def __init__(self, valuation_model):
self.valuation_model = valuation_model
@abstractmethod
def create(self):
"""
"""
raise NotImplementedError()
@property
def valuation(self):
return self.valuation_model.get_valuation(self)
以及以下模型:
from sqlalchemy import Column, Integer, Float, String
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base(cls=DealBase)
class Deal(Base):
__tablename__ = "deals"
# columns
deal_name = Column(String)
customer_name = Column(String)
def __init__(self, **kwargs):
# Call the constructur
super(Deal, self).__init__(**kwargs)
def create(self):
pass
这将返回以下错误:
导入Deal
时,我收到以下错误:
TypeError:元类冲突:派生类的元类必须是其所有基元类的(非严格)子类
我对这个错误感到困惑。哪个元类必须在这里被子类化
我如何正确地做到这一点