在应用程序引擎NDB documentation后评价的Python方法参数,有以下几点:方法调用
FlexEmployee.query(FlexEmployee.location == 'SF')
它是如何“FlexEmployee.location ==‘SF’”不是首先评估和布尔结果传入查询()?
在应用程序引擎NDB documentation后评价的Python方法参数,有以下几点:方法调用
FlexEmployee.query(FlexEmployee.location == 'SF')
它是如何“FlexEmployee.location ==‘SF’”不是首先评估和布尔结果传入查询()?
诀窍是基地ndb.Property
class覆盖__eq__
方法,以便它不会返回布尔值,而是返回传递到实际查询中的FilterNode类。
因此,是在调用query
之前评估过,但评估结果不是布尔值。
FlexEmployee.location
返回的对象定义了一个不返回布尔值的__eq__
方法 - 它返回一个表示表达式“employee.location =='SF'”的过滤器对象。查询方法使用那些在构建在底层存储上运行的查询时传入的过滤对象。
property class also defines the magic methods使您能够在这些表达式中使用>,<,> =,< =和!=。