让我们说,我有一个解析器:
self.__parser = argparse.ArgumentParser(
prog = '<...>',
fromfile_prefix_chars='@')
初始化之后,我希望在运行时将argparser中的prog变量更改为其他内容,让我们说:'aaa'。
代码:
self.__parser.prog = 'aaa'
不起作用,因为argparser在ts格式化程序中缓存了这个程序。 有人知道是否有可能以简单的方式更改此属性?
答案 0 :(得分:3)
我怀疑问题出在代码中的其他地方,因为下面的代码允许更改prog属性,通过调用print_help来证明:
import argparse
import sys
class MyParser():
def __init__(self, nm=sys.argv[0]):
self.__parser = argparse.ArgumentParser(prog=nm, fromfile_prefix_chars='@')
def change_prog_name(self, nm):
self.__parser.prog = nm
def print_help(self):
self.__parser.print_help()
my_parser = MyParser()
my_parser.print_help()
print 'after prog change:'
my_parser.change_prog_name('aaa')
my_parser.print_help()
输出:
用法:argparse_test.py [-h]
可选参数:
改编后的
-h, - help显示此帮助消息并退出: 用法:aaa [-h]
可选参数:
-h, - help显示此帮助消息并退出