Я уже создал одно пользовательское действие argparse в python.Однако, когда я добавляю больше настраиваемых действий, они, кажется, не работают.
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)
Он работал, но только что прошел 2-е и 3-е действия и показал сообщение «1-е». Здесь работает только 1-е настраиваемое действие.
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