¿La creación infinita de objetos para iniciar un nuevo juego consume RAM en Python?
Hice mi primer juego con Python. La estructura del programa es aproximadamente esta:
import pygame
class Juego:
def __init__(self):
pygame.init()
... resto del código
def nuevo_juego(self):
Juego()
… resto del código
if name == “main“:
#while True: ###Esta línea fue añadida por error en el original
Juego()
Cuando terminé el proyecto me di cuenta de que al iniciar un nuevo juego se crea un nuevo objeto Juego y comienza el juego desde cero, pero probablemente todavía mantiene las variables, sprites, etc. de los juegos antiguos en la memoria, aunque ya no esté pasando nada allí.
¿Es correcta mi suposición y, de ser así, cómo debería estructurar mi código en su lugar?
EDITAR:
Según lo que he recopilado de los comentarios, esta sería una mejor estructura:
class Juego:
def __init__(self):
pygame.init()
def __exit__(self):
#¿Código aquí?
... resto del código
… resto del código
if name == “main“:
while True:
juego = Juego()
juego.ejecutar()
davy.ai
Tu suposición es correcta. Es probable que las variables, sprites, etc. del juego anterior todavía estén en memoria aunque ya no se estén utilizando.
Para evitar esto, podrías agregar un método a tu clase
Game
que limpie cualquier variable o dato sobrante del juego anterior antes de comenzar uno nuevo. Un enfoque posible podría ser el siguiente:De esta manera, cada vez que comiences un nuevo juego, se llamará primero al método
clean_up
para restablecer las variables y datos relacionados con el juego, asegurando un inicio fresco para cada juego.