Ich baue eine DSL für die Formularvalidierung in Python und eine der Anforderungen besteht darin, dass ein Feld größer oder kleiner als eine Konstante oder ein anderer Feldwert sein kann. Als Ergebnis versuche ich Operatoren wie <
, >
, <=
und >=
zu ihren entsprechenden Funktionen im Modul operator
zu mappen, so dass sie während der Feldvalidierung aufgerufen werden können.Zuordnen von Vergleichsoperatoren zu Funktionsaufruf
Ich weiß, ich könnte nur ein Wörterbuch erstellen, um den Operator der Funktion zuzuordnen, aber gibt es einen schöneren Weg, es zu tun? Gibt es eine Möglichkeit, auf das integrierte Python-Mapping zuzugreifen?
Ich bin mir nicht sicher, ob ich verstehe, was genau Sie erreichen wollen. Python "ordnet" diese Operatoren der klasseneigenen Implementierung von entsprechenden Methoden zu, wie '__cmp__',' __eq__', '__ne__' usw. und die genaue Zuordnung zur tatsächlichen Vergleichsfunktion hängt von der Klasse ab. –
Absolut. Irgendwo in Python ist also eine Logik, die weiß, dass wenn sie '<' sieht, sie 'obj .__ lt__' aufrufen soll. Aber ich habe eine Zeichenfolge, "<" - wie kann ich sie in einen Funktions- oder Methodenaufruf konvertieren? –
Können Sie ein In-Kontext-Beispiel angeben? –