1

在应用程序引擎NDB documentation后评价的Python方法参数,有以下几点:方法调用

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

它是如何“FlexEmployee.location ==‘SF’”不是首先评估和布尔结果传入查询()?

回答

2

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

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

1

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

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