【问题标题】:How does this App Engine Ndb syntax work?这个 App Engine Ndb 语法是如何工作的?
【发布时间】:2015-03-26 13:31:28
【问题描述】:

Guido van Rossum 的Ndb Google App Engine 库有一个我觉得很好奇的syntax for queries。假设您想找到所有满意的用户,您可以编写以下查询:

User.query(User.happy == True)

我是这样理解的:

  • User 类的query 方法的函数调用,该类继承自ndb.Model。到目前为止还不错。
  • 函数调用的一个参数是一个在类属性User.happy 和值True 之间进行布尔比较的表达式。

我希望表达式的计算结果为False(就像dict.keys == True 一样),所以上面的内容应该相当于:

User.query(False)

Ndb 如何用它做一些聪明的事情?我错过了什么蟒蛇魔法?

【问题讨论】:

    标签: python google-app-engine google-cloud-datastore app-engine-ndb


    【解决方案1】:

    您缺少 python 魔术方法。

    __eq__(self, other)
    

    定义相等运算符 == 的行为。

    可以在here 找到关于此的良好指南。

    【讨论】:

    • 好的,这很聪明。谢谢!我仍然觉得它看起来很奇怪。特别是,它似乎与 PEP 8 相冲突,“不要使用 == 将布尔值与 True 或 False 进行比较。我知道您说这不是真的布尔比较。尽管如此,我大脑的语法检查器每次都会打嗝。
    • 是的,由于这种语法,我不得不关闭 E711 和 E712。
    猜你喜欢
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2013-12-21
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多