Sto costruendo un DSL per la convalida del modulo in Python e uno dei requisiti è quello di essere in grado di specificare che un campo deve essere maggiore o minore di una costante o di un altro valore di campo. Di conseguenza, sto cercando di mappare facilmente operatori come <
, >
, <=
e >=
alle loro funzioni equivalenti nel modulo operator
, in modo che possano essere chiamati durante la convalida del campo.Operatori di confronto mappe per funzionare chiamare
Mi rendo conto che potrei semplicemente creare un dizionario per mappare l'operatore alla funzione, ma c'è un modo migliore per farlo? C'è un modo per accedere alla mappatura integrata di Python?
Non sono sicuro di capire esattamente cosa stai cercando di ottenere. Python "mappa" questi operatori sulla propria implementazione di metodi secondo, come '__cmp__',' __eq__', '__ne__' e così via, e il mapping esatto alla funzione di comparazione effettiva dipende dalla classe. –
Assolutamente. Quindi da qualche parte in Python c'è una logica che sa che quando vede '<', dovrebbe chiamare 'obj .__ lt__'. Ma ho una stringa, ''<'' - come posso convertirla in una funzione o in una chiamata di metodo? –
Puoi fornire un esempio di contesto? –