我在导入文件方面遇到了问题,可以简化为:
a.py:
import b
a = 0
b.foo()
b.py:
import a
def foo():
a.a=4
所以,我试图做的是:在文件a.py中调用b.py中的函数foo(),然后改变a.py中变量的值。这是我得到的错误:
AttributeError:module' b'没有属性' foo'
我做错了什么?这样做的正确方法是什么?
答案 0 :(得分:1)
你的import is circular。你需要想出一种通过非循环导入进行测试的方法。例如创建一个你执行的新主文件;导入a.a
和b.foo
:
main.py
from b import foo
import a
a.a = 7
foo()
a.py
a = 0
b.py
import a
def foo():
a.a=4
答案 1 :(得分:0)
首先,最重要的是进行循环导入,修复它并不是一个好主意。
但是尝试对代码进行小的更改并解决。
a.py:
function cancelLeave(elem, leaveTypeId) {
var id = $(elem).closest('tr').attr('id')
alert(id)
$("#cancelLeave").modal("show");
$('.sendCancelReq').val(id);
sendCancelReq(leaveTypeId);
b.py:
from b import foo
a = 0
foo()
print a
运行a.py时,请注意def foo():
import a as filea
filea.a=4
,它正在执行两次。通过修复很多这样的事情你需要自担风险。
而不是做所有马戏团,更好地避免循环导入。