Was ist die Pythonic Möglichkeit, den Aufrufer einer Funktion zu sagen, welche Werte ein bestimmter Parameter unterstützt?Pythonic Weg um Enums
Er ist ein Beispiel für PyQt (für GUI). Sagen, dass ich eine Checkbox haben,
class checkbox(object):
....
def setCheckState(self, value):
....
Hier setCheckState()
nur oder ungeprüft geprüft erwarten.
PyQt verwendet eine integrierte Enumeration (d. H. Qt.Checked
oder Qt.Unchecked
), aber das ist schrecklich. Ich bin ständig in der Dokumentation auf der Suche nach dem Enum für das Objekt, mit dem ich arbeite.
Offensichtlich ist PyQt in einem unpythonischen C++ sytle geschrieben. Wie sollte dieses oder ein ähnliches Problem in Python behandelt werden? Laut PEP 435 scheinen Enums eine neue Ergänzung der Sprache und für sehr spezifische Anwendungen zu sein, also würde ich annehmen, dass es einen besseren Weg gibt, damit umzugehen?
Ich möchte den Code, den ich schreibe, einfach zu verwenden, wenn meine Funktionen bestimmte Parameterwerte erfordern - fast wie eine Combobox für Funktionen.
Enums wurden genau eingeführt, weil jeder seinen eigenen Ersatz ersetzte. Wenn Sie eine Aufzählung wünschen, verwenden Sie eine Aufzählung.Wenn Sie nur zwei Zustände haben, sollten Sie einen booleschen Wert verwenden: 'def setCheckState (self, checked = True):'. – MisterMiyagi
Inversion-of-Control-Befürworter würden argumentieren, dass es drei separate Funktionen geben sollte, die kein * any * Argument verwenden: "checkbox.set_checked()", "checkbox.set_unchecked()" und "checkbox.toggle()" '. – chepner
Ich schätze, das ist eher meinungsbezogen als ich dachte, ich hatte gehofft, dass es wie bei den meisten Dingen in Python einen richtigen Weg geben würde. –