【发布时间】:2014-12-01 22:30:42
【问题描述】:
我目前正在使用 Python 开发一个游戏项目,我发现自己在为 Python 背后的“概念”而苦苦挣扎,因为我已经习惯了 C 或 Java 等语言。
我试图将我的项目“划分”为几个不同主题的文件(如果我没记错的话,这些文件称为模块,尽管它们都在同一个文件夹中,就像我对 C 源文件所做的那样):@987654321 @、map.py、rendering.py 等。它们包含与这些概念相关的不同类和函数。我有一个main.py,其中包含我所有的“主要”功能(例如new_game 等)以及第一个“调用”,它将调用main_menu。
我还有一个constants.py 文件,用于存储常量值。现在的问题是,我的游戏中有几个“全局”变量和对象:玩家对象、地图等等。我希望在所有模块中保持这些变量的全局性,并能够从任何地方访问和修改它们。
我首先创建了一个global_variables.py 文件,其中列出了我的所有变量(例如map = None、player = None 等),并希望通过其他模块对其进行修改。
问题是,每次我再次调用 import global_variables 时,它都会遍历整个代码并将它们全部重新初始化为 None,这显然是我不想要的。
我在另一个 stackoverflow 线程上阅读了一个提示:在我的文件中创建一个 init() 函数,我将在其中初始化所有变量并将它们声明为全局变量。这样,我调用global_variables.init()一次,然后我可以简单地调用global_variables.player来访问播放器并对其进行修改。
它运作良好,但我发现它很混乱。我有大量的global foo,然后是foo = None,感觉就像是不必要的代码行。此外,当我键入 global_variables 时,IDE 无法“访问”变量。 ,它并没有将变量提示为自动完成,这很痛苦。
那么还有其他方法吗?这个想法是从任何函数中“声明”变量,以便 IDE 了解它们的存在,但只“初始化”它们一次,这样我就可以避免每次导入 global_variables 模块时它们被重置。
【问题讨论】:
标签: python module global-variables python-module