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

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

導入后使全局范圍內的變量可用于類

導入后使全局范圍內的變量可用于類

神不在的星期二 2021-12-26 14:43:19
我試圖避免重構一個類。目前它從全局范圍內獲取來自 argparse 的“args”,但是當我將這個類導入 unittest 時,當然 args 不存在。導入后是否可以將此變量提供給類?在該if __name__ == "__main__":行下方的 unittest 文件中重新創建變量并不難。但是導入的類缺少該變量。是否有可能以某種方式將其放入__dict__ 或使用其他技巧?一個簡單的解決方案是讓這個變量顯式地進入__init__實例化時,而不是從全局范圍中獲取它。在重構之前,我想首先檢查是否有辦法在導入后將它放入那里,當它通常從全局范圍進入時。干杯。
查看完整描述

1 回答

?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

正如您所建議的,更新__dict__可能是一種解決方案。如果您的代碼與此類似:


file1.py:


class Class:

    def foo(self):

        print(args)



if __name__ == '__main__':

    args = 'args'

    c = Class()

    c.foo()  # OK

file.2py:


import file1


c = file1.Class()

c.foo()  # will raise NameError

然后file1.__dict__['args'] = 'args'在導入后做file1:


import file1


file1.__dict__['args'] = 'args'


c = file1.Class()

c.foo()  # will print args without errors


查看完整回答
反對 回復 2021-12-26
  • 1 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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