In Google Appengine NDB gibt es Anfragen wie folgt:
%Vor% Wie kommt es, dass der Account.userid >= 40
-Ausdruck zum Zeitpunkt des Aufrufs nicht auf "True" oder "False" erweitert wird, bevor er als Argument übergeben wurde? Wie wird der Filterausdruck an die Abfrage übergeben? Ist das mit dem Überladen des Operators getan?
Ignacio ist korrekt, der NDB-Code definiert benutzerdefinierte magische Methoden auf seiner Property
class zur Vergleichsprüfung. Diese Funktionen ( __eq__
, __ne__
, __lt__
usw.) rufen alle diese benutzerdefinierte _comparison
Funktion unter der Haube.
Wie Sie sehen, gibt der Code kein boolesches Ergebnis zurück, sondern gibt eine Instanz von FilterNode
zurück, die selbst einen truthy / falsey-Wert für den Vergleich liefert.
Wie kommt es, dass der
Account.userid >= 40
-Ausdruck zum Zeitpunkt des Aufrufs nicht auf "True" oder "False" erweitert wird, bevor er als Argument übergeben wurde?
Es wird technisch erweitert / ausgewertet, bevor die Funktion query()
aufgerufen wird, es wird nur nicht auf einen booleschen Wert ausgewertet.
Tags und Links python arguments function parameter-passing google-app-engine