3

В библиотеке Guido van Rossum Ndb для Google App Engine есть syntax for queries, что мне интересно. Предположим, вы хотите найти все счастливые пользователи, вы должны написать этот запрос:Как работает синтаксис NDb для приложения?

User.query(User.happy == True) 

Я прочитал, что, как:

  • Функция вызов query метода в User класса, который наследует от ndb.Model. До сих пор.
  • Один аргумент вызова функции - выражение, выполняющее логическое сравнение между свойством класса, User.happy и значением, True.

Я бы ожидать, что выражение для оценки в False (сколько dict.keys == True бы), поэтому указанные выше, должны быть эквивалентны:

User.query(False) 

Как Ndb сделать что-нибудь умное с этим? Какую магию питона мне не хватает?

ответ

8

Вам не нужны методы магии питона.

__eq__(self, other) 

Определяет поведение оператора равенства ==.

Хорошее руководство об этом можно найти here.

+0

Хорошо, это умно. Благодаря! Мне все еще кажется странным. В частности, кажется, что он работает с PEP 8: «Не сравнивайте логические значения с True или False using ==». Я понимаю, что вы говорите, что это не * действительно * логическое сравнение. Тем не менее, мой симулятор проверки мочи икает каждый раз. – Chris

+0

Да, мне пришлось отключить E711 и E712 из-за этого синтаксиса. –