Python访问来自其他类的parseargs

时间:2017-10-08 18:43:11

标签: python python-3.x

有一个可执行的main.py文件,它将保存文件作为参数,如果保存文件已经过了,我如何检查其他类?

代码main.py:

if __name__ == '__main__':
  parser = argparse.ArgumentParser(description="test")
  parser.add_argument('--savefile', help="A savefile")
  args = parser.parse_args()


if(args.savefile):
    from A import A
    a = A()
    a.run() //executes the run function in A

类A.py

class A(){
   def run():
      import main
      if(main.args.savefile):
        //do sth
}

但是我似乎总是得到AttributeError:module 'main' has no attribute 'args'

感谢任何帮助,ty。

1 个答案:

答案 0 :(得分:1)

您可以使用类似以下模式的内容来避免危险的导入。

主要的变化是在类中,我们声明__init__函数接受我们将在main文件中给出的参数。

#file A.py
class A():
    def __init__(self, savefile=None):
        self.savefile = savefile

    def run(self):    
        if self.savefile:
            # do sth
            print(self.savefile)
# main.py
import argparse
from A import A

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description="test")
    parser.add_argument('--savefile', help="A savefile")
    args = parser.parse_args()

    if args.savefile:
        a = A(args.savefile)
        a.run()