Python上的循环导入

奥马尔

好吧,我正在尝试设置fileA具有的功能fileB在内部,file B我使用的一些变量file A就像这样:

fileA
import fileB
a = []
fileB.function1()

文件B为:

fileB
import fileA
def function1():
 fileA.a.extend([2, 3])

但我得到这个错误:

AttributeError: module 'fileB' has no attribute 'function1'

我知道有人对同一件事有疑问,但我还没有看到有人遇到这样的错误,直到现在我都找不到解决方案

布鲁诺·德斯胡里尔斯

@brunodesthuilliers在这种情况下如何避免循环依赖?

我首先要问为什么f1想要在f2中调用要触摸f1中的变量的函数。由于我们这里所提供的只是一个不受任何限制的玩具示例,因此不可能给出一个“一刀切”的答案,但是至少有三个主要解决方案:

 1.将f2.function移回f1。

如果两个人都需要如此亲密地彼此了解,为什么要分开他们呢?

f1.py:

def function():
   a.extend([2, 3, 4]])

a = []

f2.py

import f1
f1.function()
print(f1.a)

 2.将调用移至另一个模块f3中的f2.function

因此f1不必了解f2。

f1.py

a = []

f2.py

import f1

def function():
   f1.a.extend([2, 3, 4]])

f3.py

import f1
import f2

# this is really ugly... spooky action at distance.
f2.function()
print(f1.a)

3.更改f2.function以使其a作为参数

所以f2不必了解f1

f1.py

import f2
a = []
f2.function(a)

f2.py

def function(a):
    a.append([2, 3, 4])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章