Ste*_*gle 9 python google-app-engine
如果我有"a.py"
from google.appengine.ext import db
class A(db.Model):
db.ReferenceProperty(b.B)
...other stuff
Run Code Online (Sandbox Code Playgroud)
和另一个文件"b.py"
from google.appengine.ext import db
class B(db.Model):
db.ReferenceProperty(a.A)
...other stuff
Run Code Online (Sandbox Code Playgroud)
看起来Python根本不允许循环依赖.通常我猜你会改变代码,这样两个类实际上可以解决自己而不直接相互导入.也许通过第三中间人来巩固他们对彼此的引用?但我不能只使用普通的中间类,因为所有类最终都需要持久保存到数据库中?是否有任何正确的解决方案来构造上述代码,使其有效?
我有一种感觉,我会得到很多"糟糕的代码","解耦","糟糕的设计"等评论.所以我想问一下,如果你这么说,请说明你用一个实际的例子做什么.有没有任何解决方案可以让参考,类和模块保持原样?
谢谢.
解决方法是在至少一个不限制特定类的模型中使用ReferenceProperty,然后强制仅在您自己的代码中引用该类.
例如,
class A(db.Model):
b = db.ReferenceProperty()
class B(db.Model):
a = db.ReferenceProperty(A)
Run Code Online (Sandbox Code Playgroud)
您将能够将任何模型实例分配给b变量; 只是确保你只分配实际的Bs.