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 >=
den entsprechenden Funktionen im Modul operator
zuzuweisen, damit sie während der Feldüberprüfung aufgerufen werden können.
Ich weiß, dass ich einfach ein Wörterbuch erstellen könnte, um den Operator der Funktion zuzuordnen, aber gibt es einen schöneren Weg dazu? Gibt es eine Möglichkeit, auf das integrierte Python-Mapping zuzugreifen?
Soweit mir bekannt ist, gibt es kein integriertes Dictionary, das den String ">"
auf die Funktion operator.lt
usw. abbildet.
Wie andere bereits erwähnt haben, verwendet der Python-Interpreter selbst kein solches Wörterbuch, da beim Parsen und Ausführen von Python-Code zuerst die Zeichenfolge "& gt;" zu einem Token, das diesen Operator darstellt, der dann in Bytecode übersetzt wird, und das Ergebnis der Ausführung dieses Bytecodes führt die Methode __lt__
direkt und nicht über die Funktion operator.lt
aus.
Pythons internes Mapping von "& lt;" to __lt__
(und so weiter) ist nirgends in der Standardbibliothek verfügbar. Es gibt eine Menge über Pythons Interna, die nicht als Toolkit verfügbar sind. Ich bin mir überhaupt nicht sicher, wie solch ein Mapping erstellt werden würde. Was mappt auf __getitem__
?
Sie müssen nur Ihr eigenes Mapping erstellen. Es sollte nicht schwierig sein.
Tags und Links python