引用一个静态属性作为 python 3 中另一个静态属性的初始化

我是 python 的新手,所以请原谅从其他语言中窃取的命名法。我有一个包含“静态”属性(列表)和静态方法的类。我想初始化参数以仅包含对该方法的引用:


class LogFilter(object):


    @staticmethod

    def _process_friendly_time(params):

        # process params

        pass


    param_processors = [

        LogFilter._process_friendly_time

    ]


# Later

for processor in LogFilter.param_processors:

    processor(params)

此代码导致错误


NameError: name 'LogFilter' is not defined`.  

但是如果我LogFilter._process_friendly_time用刚才替换_process_friendly_time我以后会得到一个错误......


TypeError: 'staticmethod' object is not callable

是否有一种语法可以让我这样做,或者我必须将静态方法移到类之外?


繁花不似锦
浏览 185回答 1
1回答

qq_花开花谢_0

您不能LogFilter._process_friendly_time在LogFilter定义之前的某个点进行引用。在您当前声明的地方param_processors,您正处于 的定义中途LogFilter:定义尚未完成。您可以将字段声明移动到类之后。class LogFilter:    @staticmethod    def _process_friendly_time(params):        # process params        passLogFilter.param_processors = [    LogFilter._process_friendly_time]但是考虑一下您是否真的从使用静态方法中获得了任何好处。人们经常出于其他语言的习惯使用它们,但在这种情况下没有任何好处:独立的函数会更有意义。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python