我如何处理双重引用和随之而来的导入错误
How do I work with double references and consequent import errors
我 运行 遇到了导入和引用方面的问题。我要用一个虚构的例子来解释(这个例子使用mongoengine)
假设我在两个不同的文件中有以下两个 classes
# File 1
# Titled houses.py
import persons
import mongoengine as me
class House(me.Document):
residents: me.ListField(me.ReferenceField(persons.Person)) #This will be a list populated with Person objects
# File 2
# Titled persons.py
import houses
import mongoengine as me
class Person(me.Document):
house: me.ReferenceField(houses.House) #This is a House object
在上述情况下我有两个顾虑
- 我收到一个循环导入错误(b/c 他们需要彼此)- 我无法摆脱导入 b/c mongo 要求您输入 class 将分配给变量的对象
- 这似乎不太理想 - 是否有设计模式可以改善这种情况?
谢谢!
看来你可以给ReferenceField
传递一个string
参数,应该可以解决你的问题。
文件 1 :
import mongoengine as me
class House(me.Document):
residents: me.ListField(me.ReferenceField("Person"))
文件 2:
import mongoengine as me
class Person(me.Document):
house: me.ReferenceField("House")
我 运行 遇到了导入和引用方面的问题。我要用一个虚构的例子来解释(这个例子使用mongoengine)
假设我在两个不同的文件中有以下两个 classes
# File 1
# Titled houses.py
import persons
import mongoengine as me
class House(me.Document):
residents: me.ListField(me.ReferenceField(persons.Person)) #This will be a list populated with Person objects
# File 2
# Titled persons.py
import houses
import mongoengine as me
class Person(me.Document):
house: me.ReferenceField(houses.House) #This is a House object
在上述情况下我有两个顾虑
- 我收到一个循环导入错误(b/c 他们需要彼此)- 我无法摆脱导入 b/c mongo 要求您输入 class 将分配给变量的对象
- 这似乎不太理想 - 是否有设计模式可以改善这种情况?
谢谢!
看来你可以给ReferenceField
传递一个string
参数,应该可以解决你的问题。
文件 1 :
import mongoengine as me
class House(me.Document):
residents: me.ListField(me.ReferenceField("Person"))
文件 2:
import mongoengine as me
class Person(me.Document):
house: me.ReferenceField("House")