方法调用后评估的Python方法参数

时间:2016-03-31 08:19:46

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

在App Engine NDB documentation中,有以下内容:

FlexEmployee.query(FlexEmployee.location == 'SF')

如何首先评估“FlexEmployee.location =='SF'”并将布尔结果传递给query()?

2 个答案:

答案 0 :(得分:2)

诀窍是基类ndb.Property class会覆盖__eq__方法,因此它不会返回布尔值,而是返回传递给实际查询的FilterNode类。

因此,在调用query之前评估 ,但该评估的结果不是布尔值。

答案 1 :(得分:1)

FlexEmployee.location返回的对象定义了一个不返回布尔值的__eq__方法 - 它返回一个表示表达式“employee.location =='SF'”的过滤器对象。查询方法使用那些在构建它在底层存储上运行的查询时传入的过滤器对象。

property class also defines the magic methods,您可以在这些表达式中使用>,<,> =,< =和!=。