在Python中存储项目范围的全局对象

2024-10-02 12:22:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个结构类似的简单游戏项目:

src:
    game.py # <- main module
    projectile.py
    enemy.py
    heroine.py

在主模块game.py中有几个对象被初始化,我想在其他模块中使用它们,比如Pygame的精灵群,或者对女主角的精灵的引用来瞄准敌人的炮弹。我真的不想把那些引用传递给构造函数。在

所以问题是-创建一个common.py模块来存储项目范围的全局变量是否可以?一开始我试图从其他模块导入game.py,但它似乎创建了循环依赖关系,游戏无法开始。在


Tags: 模块项目对象pysrcgame游戏main
2条回答

您应按以下方式组织代码:

project_root/
    game/
        __init__.py # "I am package" file, can be empty
        projectile.py
        enemy.py
        heroine.py

把你的全局数据放入__init__.py,这是存放这类东西的常用地方。在

您的__init__.py文件可能包含以下内容:

^{pr2}$

从其他模块中可以得到:

from game import CODE, KEY
print CODE
print KEY

注意,有两个选项如何导入-绝对导入(使用game包的名称)和相对一个。在

保持简单,使用绝对导入,正如pep8建议的那样。在

我没有遇到任何关于Python的非法或不良实践的说明。我在创建自己的游戏时也使用了类似的方法。在

我有一个格式建议,就是把变量名全部大写

import common

    print common.CONSTANT1
    print common.CONSTANT2

或者

^{pr2}$

因为这将使这些变量很容易在代码中标识为常量。在

相关问题 更多 >

    热门问题