2016-07-24 9 views
0

Ich googelte herum, um irgendwelche Anwendungsfälle oder Beispiele dieser Methoden zu finden, aber konnte keine ausführliche Erklärung finden, sie werden nur entlang anderer ähnlicher Methoden aufgelistet. Eigentlich habe ich einen Code auf GitHub durchgesehen und bin auf diese Methoden gestoßen, konnte aber die Verwendung nicht verstehen. Kann jemand bitte eine detaillierte Erklärung dieser Methoden geben? Hier ist der Link von Github Code, wo ich über sie kam: https://github.com/msiemens/tinydb/blob/master/tinydb/queries.pyWie und wo man die __and__, __or__, __invert__ magischen Methoden von Python richtig verwendet

Antwort

4

Die magischen Methoden __and__, __or__ und __invert__ werden verwendet, um die Betreiber bzw. a & b, a | b und ~a außer Kraft zu setzen. Das heißt, wenn wir eine Klasse

class QueryImpl(object): 
    def __and__(self, other): 
     return ... 

dann

a = QueryImpl(...) 
b = QueryImpl(...) 
c = a & b 

äquivalent zu

a = QueryImpl(...) 
b = QueryImpl(...) 
c = a.__and__(b) 

Diese Methoden haben in tinydb überschrieben diese Syntax zu unterstützen:

>>> db.find(where('field1').exists() & where('field2') == 5) 
>>> db.find(where('field1').exists() | where('field2') == 5) 
#         ^

Siehe auch: