为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁花不似锦 2021-12-17 17:04:28
我是 python 的新手,所以请原谅从其他语言中窃取的命名法。我有一个包含“静态”属性(列表)和静态方法的类。我想初始化参数以仅包含对该方法的引用:class LogFilter(object):    @staticmethod    def _process_friendly_time(params):        # process params        pass    param_processors = [        LogFilter._process_friendly_time    ]# Laterfor 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是否有一种语法可以让我这样做,或者我必须将静态方法移到类之外?
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

您不能LogFilter._process_friendly_time在LogFilter定义之前的某个点进行引用。在您当前声明的地方param_processors,您正处于 的定义中途LogFilter:定义尚未完成。


您可以将字段声明移动到类之后。


class LogFilter:

    @staticmethod

    def _process_friendly_time(params):

        # process params

        pass


LogFilter.param_processors = [

    LogFilter._process_friendly_time

]

但是考虑一下您是否真的从使用静态方法中获得了任何好处。人们经常出于其他语言的习惯使用它们,但在这种情况下没有任何好处:独立的函数会更有意义。


查看完整回答
反对 回复 2021-12-17
  • 1 回答
  • 0 关注
  • 184 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信