使用Google Datastore中的ndb.PolyModel类编写抽象类?

时间:2015-05-04 13:26:15

标签: python google-app-engine google-cloud-datastore app-engine-ndb

是否可以使用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()

2 个答案:

答案 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.MetaModelabc.ABCMeta

class AbstractMetaModel(abc.ABCMeta, ndb.MetaModel):

  def __init__(cls, name, bases, classdict):
    super(AbstractMetaModel, cls).__init__(name, bases, classdict)

然后,设置SuperFoo' s __metaclass__ = AbstractMetaModel