2

可以说,我有一个解析器:

self.__parser = argparse.ArgumentParser(
                            prog = '<...>',
                            fromfile_prefix_chars='@')

初始化后,我希望在运行时将 argparser 中的 prog 变量更改为其他内容,可以说:'aaa'。

代码:

self.__parser.prog = 'aaa'

不起作用,因为 argparser 在 ts 格式化程序中的某个地方缓存了这个 prog。有人知道是否可以以简单的方式更改此属性?

4

1 回答 1

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 显示此帮助信息并退出

于 2011-07-07T21:36:07.467 回答