首页 > 解决方案 > 防止跨模块重复列表?

问题描述

我对 Python 很陌生,这是一个非常普遍的问题。在我的情况下,它与列表有关,但我相信任何其他类型都会观察到相同的行为。

我在一个模块中定义了一个简单的列表,该列表被导入到其他几个模块中:

list = [MyType(0),
    MyType(1),
    MyType(2),
    MyType(3)]

编辑:

由于 Cireo 和 Grismar 的评论,我认为这是出乎意料的行为。我相信它的发生是因为我使用导入系统的方式。这就是我目前正在做的事情,我才刚刚开始了解它是如何工作的:

__init__.py:

我不完全明白为什么我必须在这里导入所有的项目模块。但是,如果我删除任何一个,我的附加组件(在 Blender 中)接缝会丢失我删除的模块。

# import system module
import sys

# import local modules
# only global_module and sub_module are relevant to this example
from . import global_module, sub_module, another_module, some_other

子模块.py

# import system modules
import bpy

# import local modules
from . import global_module

... access to globals ...
def Function():
    var = global_module.data.x

在我的项目中,我会有几个像 sub_module.py 一样工作的模块。其中有几个导入 global_module。global_module 不导入任何本地内容,但列表实例将在那里定义。

有人看到这有什么问题吗?

标签: pythonlist

解决方案


CireoGrismar引导我找到了这个问题的答案。这个问题确实是我错误地使用了导入系统造成的。我对此很陌生(并且仍然没有牢牢掌握导入的内部工作原理),所以我不小心将相同的模块文件导入了__init__.py多次。

在对 Blender 的其他附加组件进行了一些研究和研究后,我对其进行了清理,现在我得到了您所期望的——每个变量的一个实例正在构建。

谢谢你们的帮助。


推荐阅读