windows 10 Pro version : Python 3.8 (docker)
Überspringen Sie nicht die Geschichte des Überspringens der Trennung von Statusverwaltungsdateien.
game.py
from status import Status
class Game():
def __init__():
self.status = Status.NOTHING
status.py
from enum import Enum, auto
class Status(Enum):
NOTHING = auto()
WAITING = auto()
PLAYING = auto()
class GameStatus():
def start():
if self.game.status == Status.NOTHING:
...
if self.game.status == Status.WAITING:
...
if self.game.status == Status.PLAYING:
...
Es fühlt sich an, als würde man den Prozess je nach Status ändern. Es fühlt sich an, als würde man einen Status als Aufzählungstyp erstellen und die Zustände entsprechend dem Spielfluss im Ausgangszustand Status.NOTHING in WAITING oder PLAYING ändern. Die Game-Klasse von game.py importiert Status, status.py importiert ihn jedoch nicht, da sich Status in derselben Datei befindet. Hier besteht eine Diskrepanz in der Objekt-ID, und nur der von der Init-Funktion zugewiesene Status.NOTHING hat eine andere Objekt-ID, und es wird kein Gleichheitsvergleich hergestellt. Es scheint, dass sich der Gleichheitsvergleich des Aufzählungstyps auf die Objekt-ID anstelle des Werts bezieht.
Ohne zu überspringen
gamestatus.py
from status import Status
class GameStatus():
def start():
if self.game.status == Status.NOTHING:
...
if self.game.status == Status.WAITING:
...
if self.game.status == Status.PLAYING:
...
status.py
from enum import Enum, auto
class Status(Enum):
NOTHING = auto()
WAITING = auto()
PLAYING = auto()
Durch Aufteilen der Datei auf diese Weise und Befolgen des Importverfahrens bei Verwendung aller Dateien wird der Unterschied in der Objekt-ID in Abhängigkeit vom Vorhandensein oder Fehlen eines Imports nicht erzeugt.
Lassen Sie uns die Datei richtig teilen, ohne zu überspringen. .. .. ..
Recommended Posts