Différence d'ID d'objet due à l'importation en Python

environnement

windows 10 Pro version : Python 3.8 (docker)

En une ligne

Ne sautez pas l'histoire de sauter la séparation des fichiers de gestion d'état.

Sujet principal

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

Différence d'ID d'objet due à l'importation en Python
[Python] Résolution du problème d'importation dû à la différence des points d'entrée
Résumé de la façon d'importer des fichiers dans Python 3
Orienté objet en python
Convertir / renvoyer des objets de classe au format JSON en Python
Pour vider stdout en Python
Méthodes d'objet chaîne en Python
Trouver des erreurs en Python
Importer dynamiquement des scripts en Python
Connectez-vous au site Web en Python
Parler avec Python [synthèse vocale]
[Python] Une autre façon d'importer
Comment développer en Python
Publier sur Slack en Python
Comment importer la bibliothèque Python configurée dans EFS dans Lambda
Comment importer des fichiers où vous le souhaitez en Python
[Python] Comment faire PCA avec Python
Différence entre list () et [] en Python
Un moyen simple de personnaliser l'importation Python
Différence entre == et est en python
Travailler avec LibreOffice en Python: import
Convertir Markdown en PDF en Python
Comment utiliser SQLite en Python
Dans la commande python, python pointe vers python3.8
Essayez de calculer Trace en Python
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
6 façons d'enchaîner des objets en Python
Comment utiliser PubChem avec Python
Comment gérer le japonais avec Python
Une alternative à `pause` en Python
Comment connaître la structure interne d'un objet en Python
J'ai essayé d'implémenter PLSA en Python
Essayez de vous connecter à qiita avec Python
J'ai essayé d'implémenter la permutation en Python
différence entre les instructions (instructions) et les expressions (expressions) en Python
Comment définir dynamiquement des variables en Python
Comment faire R chartr () en Python
Épingler le répertoire actuel au répertoire de script en Python
Grande différence dans les performances de ruby, python, httpd
[Itertools.permutations] Comment créer une séquence en Python
PUT gzip directement dans S3 en Python
Envoyer des e-mails à plusieurs destinataires avec Python (Python3)
Convertir un fichier psd en png en Python
Exemple de script pour piéger les signaux en Python
J'ai essayé d'implémenter PLSA dans Python 2
Comment obtenir la différence de date et d'heure en secondes avec Python
Pour définir le codage par défaut sur utf-8 en python
Différence entre @classmethod et @staticmethod en Python
Decorator pour éviter UnicodeEncodeError dans Python 3 print ()
Comment utiliser BigQuery en Python
[Python] Comment utiliser import sys sys.argv
Connectez-vous à Slack à l'aide de requêtes en Python
Comment obtenir stacktrace en python
Comment afficher la table quatre-vingt-dix-neuf en python