我已经在python中构造了argparse的一个自定义动作。但是,当我添加更多自定义操作时,它似乎不起作用。
class first_action(argparse.Action):
def __call__(self, parser, args, values, option_string=None):
print("the 1st")
if ...:
raise IndexError(...)
elif ...:
raise IndexError(...)
else:
setattr(args, self.dest, values)
这是我执行的第一个自定义操作,并且有效
如果我添加更多,
class second_action(argparse.Action):
def __call__(self, parser, args, value, option_string=None):
print("the 2nd")
if ...:
setattr(args, self.dest, fn1(value))
else:
setattr(args, self.dest, value)
class third_action(argparse.Action):
def __call__(self, parser, args, value, option_string=None):
print("the 3rd")
if ...:
setattr(args, self.dest, fn2(value))
else:
setattr(args, self.dest, value)
它起作用了,但是刚刚通过了第二个和第三个动作,并显示了消息“第一个”。在这里,只有第一个自定义动作正在起作用。
parser.add_argument('-f', action=first_action) <-- action working
parser.add_argument('-s', action=second_action) <-- action not working
parser.add_argument('-t', action=third_action) <-- action not working