Estoy construyendo una DSL para la validación de formularios en Python, y uno de los requisitos es poder especificar que un campo debe ser mayor o menor que una constante u otro valor de campo. Como resultado, estoy intentando asignar fácilmente operadores como <
, >
, <=
y >=
a sus funciones equivalentes en el módulo operator
, de modo que puedan invocarse durante la validación de campo.Operadores de comparación de mapas para llamar a la función
Me doy cuenta de que podría simplemente crear un diccionario para asignar el operador a la función, pero ¿hay alguna manera más agradable de hacerlo? ¿Hay alguna forma de acceder al mapeo integrado de Python?
No estoy seguro de entender qué es exactamente lo que estás tratando de lograr. Python 'asigna' estos operadores a la implementación propia de la clase de los métodos de acuerdo, como '__cmp__',' __eq__', '__ne__' y así sucesivamente, y la asignación exacta a la función de comparación real depende de la clase. –
Absolutamente. Entonces, en alguna parte de Python hay una lógica que sabe que cuando vea '<', debería llamar a 'obj .__ lt__'. Pero tengo una cadena, ''<'' - ¿cómo puedo convertirla en una llamada a función o método? –
¿Puedes dar un ejemplo en contexto? –