我试图了解如何访问和增加驻留在另一个脚本中的整数。我的层次是这样的:
- TestDirectory
-- foo.py
-- bar.py
示例:
foo.py
import TestDirectory.bar as bar
def main():
testCounter = 0
bar.increment()
print(testCounter)
main()
bar.py
import TestDirectory.foo as foo
def increment():
foo.main().testCounter += 1
我希望我的打印返回1,但它给了我一个错误:
AttributeError: module 'TestDirectory' has no attribute 'bar'
任何人都可以解释或解决我的问题吗?
答案 0 :(得分:1)
虽然我无法重现您的错误(并且无关紧要),但您似乎在这里搞乱了循环导入。
在您的案例中绕过循环问题的一种简单方法如下:
bar.py
中,修改increment
函数的行为,将int
作为输入参数,并在更新后返回。foo.py
中,更新main
以发送testCounter
作为参数并捕获其返回值。foo.py
中移除循环导入时,在bar.py
中修改导入语句(取决于您的惯例)。以下是我对此问题进行排序的简约代码更改
P.S:从TestDirectory
文件夹内部运行。
<强> foo.py 强>
import bar
def main():
testCounter = 0
testCounter = bar.increment(testCounter)
print(testCounter)
main()
bar.py
def increment(testCounter):
testCounter += 1
return testCounter
答案 1 :(得分:0)
您的代码存在很多问题:
foo
和bar
bar
访问foo
,您最终会获得循环导入,可以使用本地导入来避免这是解决您问题的方法,但很有可能,您可以通过设计更改而不是我提供的方式做得更好:
foo.py
import bar
testCounter=0
if __name__=="__main__":
bar.incrementTestCounter()
print bar.getTestCounterValue()
bar.py
def incrementTestCounter():
import foo
foo.testCounter=foo.testCounter+1
def getTestCounterValue():
import foo
return foo.testCounter
答案 2 :(得分:0)
发布我的解决方案以帮助其他有需要的人!
Hierachy就像这样(即使它无关紧要):
- Folder1
-- bar.py
- Folder2
-- foo.py
<强>解决方案:强>
<强> foo.py 强>
from Folder1 import bar
def main():
bar.increment()
print(bar.counter)
main()
<强> bar.py 强>
counter = 0
def increment():
global counter
counter += 1