2017-10-03 1 views

Antwort

2

Sie haben eine Instanz der Klasse zu instanziiert richtig Eigenschaften zu verwenden.

class Foo(ndb.Model): 
    abc = ndb.StringProperty() 

foo = Foo() 
foo.abc = 'some val' 
print foo.abc # prints 'some val' 
print foo.abc == 'a' # prints False 
print Foo.abc == 'a' # prints something not boolean - can't check now. 

Sie bekommen "I'm in!" weil NDB Eigenschaften __equal__ Betreiber zu überschreiben und ein nicht leeres Objekt zurückkehrt, die als True behandelt wird. Dies wird verwendet, um Abfragen wie query.filter(foo.abc == 'def')

+1

Also, diese Aussage ergibt sich zu 'if StringProperty (' abc ') == "a" 'was' True' ist, aber wenn ich schreibe 'if foo (abc =' bar ') == "a" 'oder' if foo ('xyz') == "a" 'vorausgesetzt, dass' class foo' einen richtigen Konstruktor zur Behandlung dieses Arguments hat. Es wird nicht "True" –

+1

Es ist nie wahr. Es wird in der IF-Anweisung als True behandelt. Probiere 'if 'abc'' aus. In Python None werden leere Strings, 0, leere Liste, leere Tupel, leere Menge als False behandelt. Andere als Wahr in booleschen Ausdrücken. Es sei denn, __equal__ überschrieben. –