我是 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
提交
取消