@YAPD,
du erhältst den Fehler, weil du Enum falsch benutzt.
So würde man eine Instanz einer Klasse erzeugen. Das geht bei einem Enum nicht.
Bei einem Enum ist das Datenfeld, der Wert selbst (hoffe das mach Sinn?)
Ein (etwas konstruiertes) Beispiel:
Code: Alles auswählen
from enum import Enum
class Switch(Enum):
ON = 0
OFF = 1
class Radio():
def __init__(self):
self.state = Switch.OFF
def turn_on(self):
self.state = Switch.ON
def turn_off(self):
self.state = Switch.OFF
def __repr__(self):
return f"<Radio state: {self.state}>"
radio = Radio()
radio.turn_on()
print(radio)
"""
Ausgabe:
<Radio state: Switch.ON>
"""
Wie du siehst haben ON und OFF bestimmte Werte (0 und 1). Diese werden vordergründig aber nicht genutzt.
Man kann ein Enum auch durch eine einfache Klasse ersetzen:
Dann würde aber der Wert der Attribute ausgegeben:
Es gibt Enums in dieser Form noch nicht sehr lange in Python. Man kann auch oft mit anderen Mitteln den gleichen Zweck erreichen. Hier zum Beispiel mit einer einfachen Konstanten:
Außerdem:
Die ParserState Klasse, die du gepostet hattest, ist nicht mit einem Enum zu vergleichen, da man mehrere Instanzen davon bilden könnte. Das macht bei einem Enum keinen Sinn. Man möchte es sogar vermeiden.