擅长:python、mysql、java
<p>可以这样做,但所有零件类都必须从PolyModel继承</p>
<p><a href="https://developers.google.com/appengine/docs/python/ndb/polymodelclass" rel="nofollow">https://developers.google.com/appengine/docs/python/ndb/polymodelclass</a></p>
<p>所以呢</p>
<pre><code>class Part(ndb.PolyModel):
#stuff
class Motor(Part):
# stuff
class Wheel(Part):
# stuff
parts = Part.query().fetch()
</code></pre>
<p>但是,所有项都作为一部分存储在数据存储中,它们有一个附加的<code>classes</code>属性,用于命名继承继承结构中的每个类。然后在检索实体时,将实例化正确的子类。你知道吗</p>
<p>另一个潜在的缺点是,存储模型中的属性名是所有子类的联合,如果您对任何属性都有默认值的话。我还没查清楚这有多远。因此,如果在所有子类中都有许多非常不同的属性,则可能会存储许多空属性,并导致在每个实体中存储所有属性名的成本。你知道吗</p>