话说好久没有写博客了,是时候写起来了!
argparse的参数在使用parse_args()后保存在了Namespace()中了,我们可以通过vars()来将其中的属性以键值对的字典形式返回
如下所示:
import argparse
args = argparse.Namespace()
args.arg1 = 1
args.arg2 = ['d']
args.arg3 = {'e':6}
print(args)
print(vars(args))
结果如下:
#Namespace(arg1=1, arg2=['d'], arg3={'e': 6})
#{'arg1': 1, 'arg2': ['d'], 'arg3': {'e': 6}}
如果参数多的时候,我们可以考虑将这些参数一次性都导入到一个类的__dict__属性中,如下所示:
class Args():
def __init__(self):
self.__dict__.update(vars(args))
print(self.__dict__)
#实例化类
args = Args()
#打印的输出
{'arg1': 1, 'arg2': ['d'], 'arg3': {'e': 6}}
这个时候我们就需要了解一下这个__dict__属性了
class A:
a = 1
def __init__(self):
self.a = 2
#查看该class的__dict__和实例的__dict__
a_class = A()
print(a_class.__dict__)
print(A.__dict__)
结果如下:
#实例的dict
{'a': 2}
#类的__dict__
{'__module__': '__main__', 'a': 1, '__init__': , '__dict__': , '__weakref__': , '__doc__': None}
可以看到实例的dict中用的是self.a,而类的属性里面的a的值是1,这也说明了__init__()是在实例化的时候执行的,在执行的时候,a的值变成了2。
综上,我们可以通过一次性将args倒入到类中的__dict__属性中来实现快速添加参数的方式。