argparseのパラメータをクラスにすばやく注ぎ込みます_dict__

1533 ワード

っていうか久しぶりにブログを書く時が来た!
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}}

パラメータが多い場合は、これらのパラメータを一度に1つのクラスにインポートすることを考えることができます.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__プロパティでパラメータをすばやく追加する方法を指定します.