0

在阅读谷歌应用引擎的 python ndb api 时,我跨越了这条线。

Guestbook.query().order(-Guestbook.post_date)

Guestbook 是一个实体类,而 post_date 是一个属性类。

但是 order 函数如何将其作为输入?它不重视它的名字,更具体地说,它的类定义。

如何定义函数来接受这样的输入?

4

1 回答 1

4

Guestbook.post_date是一个类的实例,它实现了__neg__返回一个对象的方法,该对象将告诉数据库 API 按该列的降序排序。

这是一个关于它如何工作的小例子(显然真正的类要复杂得多):

class SqlOrder(object):
    def __init__(self, column, order='ASC'):
        self.column = column
        self.order = order
    def __neg__(self):
        return SqlOrder(self.column, 'DESC')
    def __str__(self):
        return '%s %s' % (self.column, self.order)

>>> foo = SqlOrder('foo')
>>> str(foo)
'foo ASC'
>>> str(-foo)
'foo DESC'
于 2012-04-01T15:10:50.753 回答