ryn*_*ynd 5 python import include
这是一个案例,我在圈子里跑来跑去,我即将疯狂.
我希望Python首先分析所有文件,以便从一开始就知道所有标识符(我认为像Java一样).
我有一个"main.py"和一个"gui.py".每个文件都包含一个类,该类使用另一个文件中的类.当我尝试运行"main.py"时,解释器导入"gui",然后在"gui.py"中导入"main",然后它处理整个主模块并说:"Tee-hee,没有类在gui.py中使用给定的名称."
我该如何处理在Python循环依赖以最小的大惊小怪?
Gar*_*tty 16
我以为我会把它扩展成答案而不是评论.
值得注意的是,循环导入通常是设计糟糕的标志:为什么不改变设计,而不是要求语言适合您的设计?
import语句移动到另一个范围.但不,你不能预先解析文件.这不是Python的工作方式,如果你研究一下Python是如何工作的,那很明显.
如果无法避免循环导入,请将其中一个导入移出模块级作用域,然后移动到使用它的方法/函数中.
filea.py
import fileb
def filea_thing():
return "Hello"
def other_thing():
return fileb_thing()[:10]
Run Code Online (Sandbox Code Playgroud)
fileb.py
def fileb_thing():
import filea
return filea.filea_thing() + " everyone."
Run Code Online (Sandbox Code Playgroud)
这样一来,FILEA交易只会当你调用fileb_thing(),然后将其reimports FILEB,但由于fileb_thing没有得到在这一点上叫,你不坚持循环各地进口.
正如其他人所指出的那样,这是一种代码味道,但有时你需要做一些事情,即使它很难看.
| 归档时间: |
|
| 查看次数: |
10715 次 |
| 最近记录: |