我有一个类似于这个问题的simlair问题:AttributeError:';模块';对象没有属性
我正在进行一个相互的顶级导入,这导致我出现AttributeError:"module"对象没有属性错误,所以我不确定我是否可以在函数中导入,因为我基本上是在导入一个控制所有其他模块的文件。
下面是一个示例(file2.py):
import file1
count = 0
while count < file1.number_of_loops:
.....
我的函数是由控制变量触发的,所以我无法在函数本身中导入。除了创建一个单独的文件来控制之外,有没有一种方法可以引用另一个文件中的变量,而不进行相互的顶级导入?
正如一条评论所指出的,如果您使用file1.py
来存储一些配置变量,那么最好看看处理该配置的其他方法。
在我看来,解决问题的一个简单方法是将所有这些变量移动到另一个名为settings.py
的模块,这样您就可以从那里获得配置,而不必使用任何相互导入。
我将建议不要从控制"所有其他模块"的模块导入。
我的建议是将所有的控制代码放在函数(或类)中,然后将函数和参数导入到需要执行它们的地方。
例如,file2.py
:
def loop_control(num_loops):
count = 0
while count < num_loops:
# ...
另一个文件:
import file1
import file2
file2.loop_control(file.number_of_loops)
如果您需要来回交流此控件的结果,您可以考虑为此构建一个Manager(以您喜欢的方式实现)。