1

有2个文件:

首先被称为:main.py

import side

var = 1

side.todo()

第二个叫做:side.py

import main


def todo():
    print "printing variable from MAIN: %s" %(main.var)

当我运行 main.py 时出现错误:

AttributeError: 'module' object has no attribute 'todo'

在python中,你不允许以这种方式借用和使用变量吗?

我试图搜索与此相关的文档,但找不到与此问题相关的任何内容。

当然,有另一种方法可以做到这一点吗?

4

2 回答 2

2

问题不是“你不能有循环导入”,而是你不能在定义之前使用一个名字。将调用移至side.todo()脚本运行后不会立即发生的地方,或移至main.var第三个模块。

于 2012-10-06T19:03:51.527 回答
0

一个快速而丑陋的解决方案是将 import 语句移动到在 side.py 中需要它之前不会执行的位置

def todo():
    import main
    print "printing variable from MAIN: %s" %(main.var)

我会建议反对它。该示例是人为设计的,但我相信您可以为您的具体情况找到更好的解决方案。

于 2012-10-06T19:07:38.057 回答