我应该使用class作为全局变量的容器

Ham*_*teR 5 python memory global-variables

我在pygame中制作了一个简单的游戏,我意识到我需要一堆标记,数量和各种全球员工.所以我决定定义一个类并像这样使用它:

class Staff():
    def __init__(self):
        self.modes={'menu':True,'spawning':False,'sprite_change':False}
        self.timer=pygame.time.Clock()
        self.tick_count=0
Run Code Online (Sandbox Code Playgroud)

在我的游戏循环中,我只给我的所有函数一个变量:

def main_loop():
    staff=Staff()
    while not done:
        update_positions(staff)
        clear_background(staff)
        draw_sprites(staff)
Run Code Online (Sandbox Code Playgroud)

我知道这种方法很有效(对我而言),但是我想知道这会影响我游戏的速度,可能是我在做一些可怕的事情?非常感谢您的回答.

小智 2

请帮自己一个忙,重新考虑您的设计。

首先,您可能认为使用全局变量更容易。您可以传递值,并且可以从每个函数访问它们,而无需使用参数将其传递给它们。但是,当涉及到调试或查找错误或只是在一段时间后查看代码时,全局变量就会变成一场噩梦。因为您很容易忘记这些变量将对其他函数或类产生影响。所以,帮自己一个忙,重新考虑你的设计。

例如,“全局”变量的好地方可能是主类或函数。一切开始的地方。我猜想有一个循环,有些事情会永久重复。从那里您可以将其传递给特定的类或函数。我不知道你的架构,但拥有全局变量根本没有什么用处。