在 Python 中是否会不断创建对象以开始新游戏 hog ram?
Does endless creation of objects to start new game hog ram in Python?
我用 python 制作了第一款游戏。程序结构大致是这样的:
导入 pygame
class Game:
def __init__(self):
pygame.init()
... rest of the code
def new_game(self):
Game()
...rest of the code
if __name__ == "__main__":
#while True: ###This line was added to original by mistake
Game()
当我完成项目时,我意识到通过开始新游戏它确实创建了新的 Game
对象并从头开始游戏,但它可能仍然保留旧游戏变量、精灵等在内存中,即使那里什么都没有发生了。
我的假设是否正确?如果正确,我应该如何构建我的代码?
编辑:
根据我从评论中收集到的信息,这将是更好的结构:
class Game:
def __init__(self):
pygame.init()
def __exit__(self):
#Code here?
... rest of the code
...rest of the code
if __name__ == "__main__":
while True:
game = Game()
game.run()
我建议采用不同的方法 运行 方法应该 return 游戏是否应该继续。所以你可以这样做:
if __name__ == "__main__":
run_game = True
while run_game:
game = Game()
run_game = game.run()
当游戏结束时方法run ()
必须return True
如果要开始新游戏,否则它必须return False
。
class Game:
def __init__(self):
# [...]
def run(self):
# application loop
running = True
while running:
# [...]
# ask to restart game
start_new_game = # [...] set True or False
return start_new_game
我用 python 制作了第一款游戏。程序结构大致是这样的: 导入 pygame
class Game:
def __init__(self):
pygame.init()
... rest of the code
def new_game(self):
Game()
...rest of the code
if __name__ == "__main__":
#while True: ###This line was added to original by mistake
Game()
当我完成项目时,我意识到通过开始新游戏它确实创建了新的 Game
对象并从头开始游戏,但它可能仍然保留旧游戏变量、精灵等在内存中,即使那里什么都没有发生了。
我的假设是否正确?如果正确,我应该如何构建我的代码?
编辑: 根据我从评论中收集到的信息,这将是更好的结构:
class Game:
def __init__(self):
pygame.init()
def __exit__(self):
#Code here?
... rest of the code
...rest of the code
if __name__ == "__main__":
while True:
game = Game()
game.run()
我建议采用不同的方法 运行 方法应该 return 游戏是否应该继续。所以你可以这样做:
if __name__ == "__main__":
run_game = True
while run_game:
game = Game()
run_game = game.run()
当游戏结束时方法run ()
必须return True
如果要开始新游戏,否则它必须return False
。
class Game:
def __init__(self):
# [...]
def run(self):
# application loop
running = True
while running:
# [...]
# ask to restart game
start_new_game = # [...] set True or False
return start_new_game