首页 > 解决方案 > 如何创建一个像 argparse.ArgumentParser 一样工作的“容器”?

问题描述

在编写代码时,我们大多数人都会使用如下 Python 模块argparse

import argparse

parser = argparse.ArgumentParser(description='descript')
parser.add_argument('integers', type=int, help='a number')

opt = parser.parse_args()

train(opt)

然后我们可以将 传递opt给下一个函数。并且该函数可以通过opt.integers.

.ipynb文件中进行测试时,导入argparse和使用add_argument过于复杂。我想知道是否有这样的容器,如下所示:

opt = SpecificContainer()

opt.length = 10
opt.dim = 3
opt.batch = 8

train(opt)

也就是说,我得到了opt变量。我可以opt.val1 = 10用来设置值。我可以将opt变量传递给其他函数。

标签: pythonclass

解决方案


更好的方法是不要将所有代码与argparse依赖项耦合。argparse相反,让您的函数接受一个定义明确的单个参数列表,并在您解析命令行时从结果中挑选它们。

def train(length: int, dim: int, batch: int):
    ...


opt = parser.parse_args()

train(opt.length, opt.dim, opt.batch)

推荐阅读