2012-04-01 44 views
0

當閱讀谷歌應用程序引擎的python ndb api時,我在這一行中進行了攝像。如何用數學符號作爲python輸入變量名?

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

留言簿是一個實體類,post_date是一個屬性類。

但是order函數如何將其作爲輸入?其不值它的名字,更具體地說它是 其定義的類。

如何定義函數來接受這樣的輸入?

回答

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' 
相關問題