如何使用引用或函数克服循环导入



我正在处理一个现有的项目,为了不破坏整个应用程序的功能,不允许重组应用程序,这导致我遇到了一些非常长的循环导入问题。

我想知道是否有一个类似于类型检查的解决方案,它允许我绕过可调用或变量等其他事物的循环导入问题。

例如:

from typing import TYPE_CHECKING
from somemodule import A # This is the line causing import issue.
if TYPE_CHECKING:
from somemodule import A # Solution for type checking.
def func() -> 'A': # This works
return 'A'(a=1, b=1) # But what can I do for this ?

任何帮助都将不胜感激,提前表示感谢。

我得到的错误是

File "SomePath", line 5, in <module>
from somemodule import A
File "SomeOtherPath", line 6, in <module>
from nrelatedmodule2 import get_something
File "SomePath", line 20, in <module>
from relatedmodule1 import get_another_thing
File "SomeOtherPath", line 3, in <module>
from somemodule import A

可以检查是否定义了名称(如A(:

'A' in globals()

使用此选项,您应该能够导入A,当且仅当其他名称未定义时:

if not module in globals():
import A

或者导入A,除非它已经导入:

if not A in globals():
import A

最新更新