我有一个结构类似的简单游戏项目:
src:
game.py # <- main module
projectile.py
enemy.py
heroine.py在主模块game.py中初始化了几个对象,我希望在其他模块中使用它们,比如Pygame的精灵组,或者引用女主角的精灵来瞄准敌人的投射物。我真的不想把这些引用传递给构造函数。
所以问题是--创建一个用于存储项目范围内的全局的common.py 模块可以吗?--起初我尝试从其他模块导入game.py,但是它似乎创建了循环依赖关系,游戏不会开始。
发布于 2014-06-06 14:37:00
对于Python来说,我没有遇到任何事情表明这是非法的或糟糕的实践。我在创建自己的游戏时也使用了类似的方法。
我有一个格式化建议,就是对变量名使用所有的大写,即。
import common
print common.CONSTANT1
print common.CONSTANT2或
from common import *
print CONSTANT1
print CONSTANT2因为这将使这些变量易于识别为代码中的常量。
发布于 2014-06-06 14:35:38
您应以下列方式组织您的代码:
project_root/
game/
__init__.py # "I am package" file, can be empty
projectile.py
enemy.py
heroine.py把你的球体放进__init__.py,这是存放这类东西的常见地方。
您的__init__.py文件的内容可能如下:
CODE = "secret"
KEY = "digital"从你的其他模块你可以得到它们:
from game import CODE, KEY
print CODE
print KEY注意,如何导入有两个选项-绝对导入(使用game包的名称)和相对导入。
保持简单,并使用绝对导入,如PEP 8所建议的。
https://stackoverflow.com/questions/24084215
复制相似问题