Ich arbeite durch ein mechanisches System (z. B. eine einfache Schrägverzahnung) und möchte verhindern, dass Benutzer Werte zuweisen, die nicht in einer zugeordneten Aufzählung enthalten sind. Ich bin neu in Aufzählungen und ‚pythonic‘ nähert sich, diese Frage zu beantworten ... so meine Anfrage ist zweifach:Verwenden von Enums zum Überprüfen von Attributen einer Klasse/Instanz in Python
- Ist es sinnvoller in Python Eingabefehler passieren zu lassen und nachfolgenden Code verwenden, um die Folgen zu verwalten ?
- Sollte die Enum in der Klasse definiert werden, die es verwendet? Ich beabsichtige nicht, dass dieses Enum an anderer Stelle verfügbar ist ... Ich fühle mich komisch, wenn ich es am Anfang meiner Akte hängen lasse.
Hier ist der Code:
HAND = Enum('HAND', ['LH', 'RH'])
class HelicalGear(Gear):
def __init__(self, hand):
self.type_ = 'Helical'
self.hand = hand
@property
def hand(self):
return self._hand
@hand.setter
def hand(self, hand):
if not hand:
raise ValueError("Gear hand definition required")
elif hand not in [e.name for e in HAND]:
raise ValueError("Gear hand must be LH or RH")
self._hand = hand
'__init__' setzt implizit' self._hand' über 'hand.setter'. Die Verwendung des Setter hat den Vorteil, die Typprüfung hinzuzufügen. – MisterMiyagi
Danke für die schnelle Rückmeldung! Sehr hilfreich! –
@MisterMiyagi: Ah, genau du bist! Danke, dass du das verstanden hast. –