【发布时间】:2019-05-13 23:08:13
【问题描述】:
我有以下文件:
user.py
...
from models.company import Company
class User(BaseModel):
company = ForeignKeyField(Company, ...)
...
公司.py
...
from models.user import User
class Company(BaseModel):
user = ForeignKeyField(User, ...)
...
就 python 而言,这是一个正常的循环导入错误。问题是通常的解决方法(将导入语句放在文件末尾,以不同方式导入等)在这种情况下不起作用,因为我在类属性的定义中使用了一个类另一类的。
在这种情况下解决循环导入错误的正确方法是什么?
【问题讨论】:
-
你能把它们放在 1 个文件中并且根本不导入吗?
-
嗯,我有很多情况会发生这种情况。这将是一个巨大的“模型”文件。我认为这不是一个好的选择
-
您可以创建一个空类,然后导入并重新实例化该类,但我很确定您不需要做这种事情
-
@PatrickHaugh 你是对的,有一个
DeferredForeignKey就是为此而定义的。谢谢你的建议! -
一旦你有了一个可行的解决方案,你应该考虑为你自己的问题写一个答案,这样其他有这个问题的人就会知道该怎么做。
标签: python python-3.x dependency-injection circular-dependency peewee