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

Python:在模块函数中创建的类实例在其他模块中不可见,python,module,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

我必须创建模块、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

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()
在对象创建之后,我实际上可以在tools模块中使用environment对象,但是我的IDE在任何地方都会标记错误,因为env的导入是在实例创建之前完成的

实例也在函数create_env_obj的作用域内创建。因此,它对我的工具模块不可见。 我试着重新加载,但没有任何改变

现在,问题是它实际上在任何地方都有效,但是看到到处都是错误让我觉得我在这里部署了错误的实践。 什么是更干净的归档解决方案?

试试以下方法:

# 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()

您能否在
env.py
的顶层添加一个伪
se=None
,以提示IDE该变量存在?我不理解你问题的第二部分关于“工具看不见”的实例。如果您在
工具中成功地使用它,那么它在什么意义上是不可见的?@BrenBarn:这就成功了,我不知道如何初始化“空”实例。顺便说一句,“不可见”指的是IDE不可见,但对象确实存在并且完全工作。