windows 10 Pro version : Python 3.8 (docker)
Ne sautez pas l'histoire de sauter la séparation des fichiers de gestion d'état.
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:
...
C'est comme changer le processus en fonction du statut. C'est comme créer un statut comme type d'énumération et changer les états en ATTENTE ou EN JEU selon le déroulement du jeu dans l'état initial Status.NOTHING. La classe Game de game.py importe Status, mais status.py ne l'importe pas car elle a Status dans le même fichier. Il y a une différence dans l'ID d'objet ici, et seul le "Status.NOTHING" attribué par la fonction init a un ID d'objet différent et la comparaison d'égalité n'est pas établie. Il semble que la comparaison d'égalité du type d'énumération se réfère à l'ID d'objet au lieu de la valeur.
Sans sauter
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()
En divisant le fichier comme ça et en suivant la procédure d'importation lors de l'utilisation de tous les fichiers, la différence d'ID d'objet selon la présence ou l'absence d'import n'est pas créée.
Divisons le fichier correctement sans sauter. .. .. ..
Recommended Posts