蟒蛇NDB類我有兩個類:相互引用
class A(ndb.Model):
first_prop = ndb.StructuredProperty(B)
class B(ndb.Model):
second_prop = ndb.StructuredProperty(A)
把類名引號給出了一個錯誤。
什麼是合理的方式使它發生,這使得代碼封裝保持完好?
蟒蛇NDB類我有兩個類:相互引用
class A(ndb.Model):
first_prop = ndb.StructuredProperty(B)
class B(ndb.Model):
second_prop = ndb.StructuredProperty(A)
把類名引號給出了一個錯誤。
什麼是合理的方式使它發生,這使得代碼封裝保持完好?
您可以在之後指定屬性定義模型。請參閱_fix_up_properties
文檔字符串here。
class A(ndb.Model):
pass
class B(ndb.Model):
pass
A.first_prop = ndb.StructuredProperty(B)
B.second_prop = ndb.StructuredProperty(A)
A._fix_up_properties()
B._fix_up_properties()
讓我們知道這種方法是否會在數據存儲區中創建一個黑洞。 – 2015-02-27 03:47:33
您可能想要使用ndb.KeyProperty
而不是ndb.StructuredProperty
。使用前者,讓兩個類相互引用是完全可以接受的。
這個例子是另一個更具體的現實世界問題的別名。我正在使用'endpoints proto datastore',並且我需要使'@EndpointsAliasProperty(property_type = B.ProtoModel())', 引用函數的註釋中的每個類。 – user47376 2015-02-25 09:10:31
@ user47376,然後問一個關於真實世界問題的問題,而不是你問的問題...... – 2015-02-25 13:57:21
你有沒有想過這件事,我懷疑這可以工作,你有效地創建了一個遞歸屬性。 – 2015-02-24 22:05:41
嗯......這似乎可能會導致週期性參考的問題,如果數據存儲處理該數據,我會感到震驚... – mgilson 2015-02-24 22:06:13
您試圖實現什麼? – 2015-02-24 23:28:04