如何从python中的另一个导入模块引用一个模块中的变量?

时间:2015-03-15 01:33:41

标签: python import pygame

菜单:

import myGame as gameMod
def startGame(screen, level, musicVolume, effectsVolume, numControllers):
    game = gameMod.Game()
    game.main(screen, level, musicVolume, effectsVolume, numControllers)

myGame:

class Game(object):
    def main(self, screen, level, musicVolume, effectsVolume, numControllers):
    self.timer = 0

class EnemyBullet(pygame.sprite.Sprite):
    def __init__(self, location, kind, numShots, ID, *groups):
         self.dx = math.sin(game.timer) * 100

但这会引发错误

NameError: global name 'game' is not defined

我希望game.timer能够引用Menu中创建的Game()实例,即使EnemyBullet和Game类都保存在myGame模块中。 当myGame模块运行并且存在这些行时,它会运行而没有任何错误。我假设这是因为Game()实例是全局的,并且可以找到它与导入时的情况不同。

if __name__ == "__main__":
    game = Game()
    game.main(screen, 1, 50, 0, 0)

1 个答案:

答案 0 :(得分:0)

我不确定这里发生了什么。你没有将游戏导入gameMod吗?所以,不应该是gameMod.timer。

现在,如果您从游戏模块中调用计时器,那么为什么不能直接将其作为计时器引用。我假设计时器是游戏中的变量,因此存在于其命名空间中。