如何在python中使用带有数学符号的变量名作为输入?

时间:2012-04-01 15:03:06

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

当阅读谷歌应用引擎的python ndb api时,我突然看到这一行。

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

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

但订单功能如何将其作为输入?更具体而言,它不值得它的名字 它的定义。

如何定义函数来进行这样的输入?

1 个答案:

答案 0 :(得分: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'