【发布时间】:2020-11-03 04:48:22
【问题描述】:
我有一个数据增强脚本,它有一个类,其中包含一组由 argparse 参数触发的可选方法。我很好奇如何根据从终端传入的顺序来构造我的代码来处理 argparse 命令。
目标:如果我将参数传递为:python maths.py --add --multiply 我希望它先加 10,然后乘以 5 秒。 如果我将参数传递为:python maths.py --multiply --add 我希望它先乘以 5,然后加 10。
例如:
class Maths:
def __init__(self):
self.counter = 0
def addition(self, num):
self.counter += num
return self
def multiply(self, num):
self.counter *= num
return self
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--add', required = False, action = 'store_true')
parser.add_argument('--multiply', required = False, action = 'store_true')
args = parser.parse_args()
maths = Maths()
maths.addition(10)
maths.multiply(5)
print(maths.counter)
if __name__ == "__main__":
main()
如何根据传入参数的顺序完成排序?谢谢!
【问题讨论】:
-
argparse不是一个很好的解析器。链接中的所有建议都与args命名空间固有的无序性质作斗争。如果有订单,则由add_argument命令及其默认值确定。用户值只是覆盖那些默认值。 -
@hpaulj 你有什么建议让这个结构更可变吗?情况是我有不同的增强方法,并且以不同的顺序使用它们会产生不同的结果。我想让它从用户的角度来看是动态的。
-
我只是想到了几种按顺序收集输入的方法。
标签: python-3.x class cmd terminal argparse