2015-10-04 22 views
7

voglio essere in grado di passare gli argomenti come questo:!!Pass, =, ~, <, > come parametri

fn(a>=b) or fn(a!=b) 

ho visto questo comportamento in DjangoORM e SQLAlchemy, ma non so come raggiungerlo .

+3

Non è proprio quello che stai chiedendo, ma nel caso generale puoi passare ad es. 'operator.ne' (per'! = ') e' operator.gt' (per '>') intorno – jonrsharpe

risposta

8

Gli ORM utilizzano special methods su classi per a e b per agganciare operatori e personalizzare ciò che viene prodotto.

>= per è gestito dallo object.__ge__() method, mentre != chiamate object.__ne__().

In genere, l'oggetto ORM utilizzato per a restituisce un nuovo oggetto con l'operazione applicata, consentendo di eseguire operazioni concatenate e la funzione fn() prevede un tale oggetto ORM e leggerà lo stato dell'operazione da lì.