Если у меня есть «a.py»
from google.appengine.ext import db
class A(db.Model):
db.ReferenceProperty(b.B)
...other stuff
и другой файл "b.py"
from google.appengine.ext import db
class B(db.Model):
db.ReferenceProperty(a.A)
...other stuff
Похоже, что Python просто не допускает циклические зависимости. Обычно я полагаю, что вы изменили бы код таким образом, чтобы два класса фактически могли разрешать себя, не импортируя друг друга напрямую. Возможно, путем объединения их ссылки друг на друга через третьего посредника? Но я не могу просто использовать обычный промежуточный класс, поскольку в конечном итоге все классы должны быть сохранены в базе данных? Есть ли правильное решение для структурирования приведенного выше кода, чтобы он работал?
У меня такое ощущение, что я собираюсь получить много "плохого пахнущего кода", "развязки", "плохого дизайна" и т. Д. Поэтому я прошу, если вы скажете это, пожалуйста, проиллюстрируйте, что вы будете делать с реальным примером. Есть ли какие-либо решения, которые позволили бы оставить ссылки, классы и модули без изменений?
Спасибо.