可変数の引数を取り、条件付きでクラス属性として設定するコンストラクター(または他の関数)を持つクラスがあるとします。
手動で設定することもできましたが、Pythonでは変数パラメーターが十分に一般的であるため、これを行うための一般的なイディオムが必要です。しかし、これを動的に行う方法がわかりません。
evalを使用した例がありますが、安全ではありません。私はこれを行う適切な方法を知りたいです-おそらくラムダで?
class Foo:
def setAllManually(self, a=None, b=None, c=None):
if a!=None:
self.a = a
if b!=None:
self.b = b
if c!=None:
self.c = c
def setAllWithEval(self, **kwargs):
for key in **kwargs:
if kwargs[param] != None
eval("self." + key + "=" + kwargs[param])
pip install attrs、クラスをで装飾し@attr.s、引数をa = attr.ib(); b = attr.ib()etcに設定します。詳細はこちらをご覧ください。