我是 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
]
但是考虑一下您是否真的从使用静态方法中获得了任何好处。人们经常出于其他语言的习惯使用它们,但在这种情况下没有任何好处:独立的函数会更有意义。
添加回答
举报
0/150
提交
取消