Python:在模块函数中创建的类实例在其他模块中不可见

时间:2014-01-03 23:44:40

标签: python module

我需要模块,tools.py和env.py.在工具模块中,我正在检查某些文件是否存在。

根据这些检查的结果,我想初始化env模块中两个可能类之一的实例。我希望这些实例对象成为env模块的一部分,因为我想从env模块导入环境设置,而不是从工具模块导入。这就是为什么我在env模块中编写了一个创建实例的函数。

tools.py

# tools.py
import env

if file_exists == True:
    env.create_env_obj(True)
else:
    env.create_env_obj(False)

env.py

# env.py

def create_env_obj(file_exists):
global se
if file_exists == True:
    print("Creating environment A")
    se = SetEnvForExistingFile()
elif file_exists == False:
    print("Creating environment B")
    se = SetEnvForNoExistingFile()

在创建对象之后,我实际上可以在工具模块中使用环境对象,但是我的IDE会在任何地方标记错误,因为在创建实例之前已经完成了env的导入。

此外,实例是在该函数create_env_obj的范围内创建的。所以我的工具模块看不到它。 我尝试重新加载,但它没有改变任何东西。

现在,问题是它实际上无处不在,但看到各地的错误让我觉得我在这里部署了不好的做法。 存档的清洁解决方案是什么?

1 个答案:

答案 0 :(得分:0)

试试这个:

# env.py
se = None
def create_env_obj(file_exists):
    global se
    if file_exists:
        print("Creating environment A")
        se = SetEnvForExistingFile()
    else:
        print("Creating environment B")
        se = SetEnvForNoExistingFile()