【问题标题】:how to take variable name with mathematical sign as input in python?python - 如何将带有数学符号的变量名作为python中的输入?
【发布时间】:2012-04-01 15:03:06
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    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'
    

    【讨论】:

      猜你喜欢
      • 2017-12-03
      • 2022-07-14
      • 2013-02-05
      • 2014-08-11
      • 1970-01-01
      • 2013-01-15
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多