我试图避免重构一个类。目前它从全局范围内获取来自 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
提交
取消