是否可以使用Python创建一个使用来自Google Datastore的ndb PolyModel的抽象类?我尝试过使用ABCMeta但没有结果。有什么办法可以将SuperFoo类定义为Abstract吗?
class SuperFoo(polymodel.PolyModel):
__metaclass__ = ABCMeta
node_id_int = ndb.IntegerProperty()
class Foo(Foo):
name_str = ndb.StringProperty()
category_str = ndb.StringProperty()
答案 0 :(得分:0)
是否需要声明为抽象?相反,如何使用标准的Python继承?
class SuperFoo(polymodel.PolyModel):
node_id_int = ndb.IntegerProperty()
class Foo(SuperFoo):
name_str = ndb.StringProperty()
category_str = ndb.StringProperty()
答案 1 :(得分:0)
您可以通过继承两个相关的元类来完成此操作:ndb.MetaModel
和abc.ABCMeta
。
class AbstractMetaModel(abc.ABCMeta, ndb.MetaModel):
def __init__(cls, name, bases, classdict):
super(AbstractMetaModel, cls).__init__(name, bases, classdict)
然后,设置SuperFoo
' s __metaclass__ = AbstractMetaModel
。