Unterschied in der Objekt-ID aufgrund des Imports in Python

Umgebung

windows 10 Pro version : Python 3.8 (docker)

In einer Zeile

Überspringen Sie nicht die Geschichte des Überspringens der Trennung von Statusverwaltungsdateien.

Hauptthema

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

Unterschied in der Objekt-ID aufgrund des Imports in Python
[Python] Lösen des Importproblems aufgrund der unterschiedlichen Einstiegspunkte
Zusammenfassung zum Importieren von Dateien in Python 3
Objektorientiert in Python
Konvertieren / Zurückgeben von Klassenobjekten in das JSON-Format in Python
So löschen Sie stdout in Python
String-Objektmethoden in Python
Finde Fehler in Python
Importieren Sie Skripte dynamisch in Python
Melden Sie sich auf der Website in Python an
Sprechen mit Python [Text zu Sprache]
[Python] Eine andere Möglichkeit zum Importieren
Wie man in Python entwickelt
Post an Slack in Python
So importieren Sie die in EFS eingerichtete Python-Bibliothek in Lambda
So importieren Sie Dateien in Python an eine beliebige Stelle
[Python] Wie man PCA mit Python macht
Unterschied zwischen list () und [] in Python
Einfache Möglichkeit, den Python-Import anzupassen
Unterschied zwischen == und ist in Python
Arbeiten mit LibreOffice in Python: Importieren
Konvertieren Sie Markdown in Python in PDF
Verwendung von SQLite in Python
Im Python-Befehl zeigt Python auf Python3.8
Versuchen Sie, Trace in Python zu berechnen
Wie man MySQL mit Python benutzt
So verpacken Sie C in Python
Verwendung von ChemSpider in Python
6 Möglichkeiten zum Stringen von Objekten in Python
Verwendung von PubChem mit Python
Umgang mit Japanisch mit Python
Eine Alternative zu "Pause" in Python
Wie Sie die interne Struktur eines Objekts in Python kennen
Ich habe versucht, PLSA in Python zu implementieren
Versuchen Sie, sich mit Python bei qiita anzumelden
Ich habe versucht, Permutation in Python zu implementieren
Unterschied zwischen Anweisungen (Anweisungen) und Ausdrücken (Ausdrücken) in Python
Dynamisches Definieren von Variablen in Python
So machen Sie R chartr () in Python
Pin aktuelles Verzeichnis an Skriptverzeichnis in Python
Großer Unterschied in der Leistung von Ruby, Python und httpd
[Itertools.permutations] So löschen Sie eine Sequenz in Python
PUT gzip direkt in S3 in Python
Senden Sie mit Python (Python3) E-Mails an mehrere Empfänger.
Konvertieren Sie die psd-Datei in Python in png
Beispielskript zum Überfüllen von Signalen in Python
Ich habe versucht, PLSA in Python 2 zu implementieren
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
So setzen Sie die Standardcodierung in Python auf utf-8
Unterschied zwischen @classmethod und @staticmethod in Python
Dekorateur zur Vermeidung von UnicodeEncodeError in Python 3 print ()
So arbeiten Sie mit BigQuery in Python
[Python] Verwendung von import sys sys.argv
Melden Sie sich mit Anforderungen in Python bei Slack an
Wie bekomme ich Stacktrace in Python?
So zeigen Sie die neunundneunzig Tabelle in Python an