diff --git a/mars.py b/mars.py index 761a96847d75fc3d1b9baaa2d645c345d9ed3974..297dca1b293d15294cd7599915dbf81412765918 100644 --- a/mars.py +++ b/mars.py @@ -2,17 +2,35 @@ from plateau import Plateau class Mars: """ - Eine Klasse zur Repräsentation des Mars. + Eine Singleton-Klasse zur Repräsentation des Mars. + Es kann nur eine Instanz dieser Klasse existieren. """ + _instance = None - def __init__(self, plateau: Plateau): + def __new__(cls, plateau: Plateau = None): """ - Initialisiert den Mars mit einem Plateau. + Erstellt eine neue Mars-Instanz oder gibt die existierende zurück. + + Args: + plateau: Das Plateau, das den Mars repräsentiert (nur beim ersten Aufruf verwendet) + + Returns: + Die einzige Instanz der Mars-Klasse + """ + if cls._instance is None: + cls._instance = super(Mars, cls).__new__(cls) + cls._instance.plateau = plateau + return cls._instance + + def __init__(self, plateau: Plateau = None): + """ + Initialisiert den Mars (wird nur beim ersten Mal ausgeführt). Args: plateau: Das Plateau, das den Mars repräsentiert """ - self.plateau = plateau + if not hasattr(self, 'plateau'): + self.plateau = plateau def drive(self, cmd: str) -> str: """