python - 在Python中的静态变量中分配类的静态方法

标签 python

我有以下类会产生错误:

class MyClass(object):

    QUERIES_AGGS = {
        'query3': {
            "query": MyClass._make_basic_query,
            'aggregations': MyClass._make_query_three_aggregations,
            'aggregation_transformations': MyClass._make_query_three_transformations
        }
    }


    @staticmethod
    def _make_basic_query():
       #some code here

   @staticmethod
   def _make_query_three_aggregations():
        #some code here

   @staticmethod
   def _make_query_three_transformations(aggs):
        #some code here

目前它无法识别 MyClass。如果我删除“MyClass”,python 将无法识别这些函数。我知道我可以将静态方法从类内部移到外部作为模块函数。是否可以将它们保留在类中并像我一样使用它们?

最佳答案

更改顺序,以便在定义方法之后指定字典。这样做时也不要使用 MyClass

class MyClass(object):

    @staticmethod
    def _make_basic_query():
       #some code here
       pass

    @staticmethod
    def _make_query_three_aggregations():
       #some code here
       pass

    @staticmethod
    def _make_query_three_transformations(aggs):
       #some code here
       pass

    QUERIES_AGGS = {
        'query3': {
            "query": _make_basic_query,
            'aggregations': _make_query_three_aggregations,
            'aggregation_transformations': _make_query_three_transformations
        }
    }

这是有效的,因为在类声明的主体中,您可以引用方法而无需类类型。不过,您引用的内容必须已经声明。

关于python - 在Python中的静态变量中分配类的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40126208/

相关文章:

python - 有没有办法总结一个计数?

python - Tweepy 对于大型 Twitter 帐户来说速度很慢

即使 curl 和浏览器给出连贯的文本,Python 请求库也会给出乱码响应

python - 使用 pip 安装 Mayavi - 没有名为 vtk 的模块

python - tensorflow 回归神经网络对所有内容输出相同的数字

Python:写入文本文件时每N个字符结束行

python - 字节码指令成本

python - mysql 迁移遇到问题(不能将序列乘以 'tuple' 类型的非整数)

python - 从 ordereddict 格式化我的 sql-insert 语句时,数据只有 1 个字符,而不是 ordereddict 的键/值

python - 如何弥补 Paramiko key 更新失败?