我試圖避免重構一個類。目前它從全局范圍內獲取來自 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
添加回答
舉報
0/150
提交
取消