亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

引用一個靜態屬性作為 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 關注
  • 219 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號