私はいくつかの引数(オプション引数を含む)を期待する関数/メソッドA()
を持っています。別の機能B()
は、前記機能A()
に渡されるデータに対する前処理を行う。私は機能のB()
のいくつかの代替実装を持っている私は別の上の1つの利点について混乱を引き起こしている。 私はそれらの中のどれを(もしあれば)使うべきかを理解したいと思います。結局のところPython(dictと変数)で使用する関数に引数を渡す方法はありますか?
、ここThere should be one-- and preferably only one --obvious way to do it.
は、コードスニペットである:上記のコードで
class Foo(object):
def __init__(self, param1, param2, param3=None):
self.param1 = param1
self.param2 = param2
self.param3 = param3
@classmethod
def from_dump_v1(cls, dump):
param1, param2, param3 = dump.get('param_1'), dump.get('_param_2'), dump.get('paramThree')
return cls(param1, param2, param3)
@classmethod
def from_dump_v2(cls, dump):
dump['param1'] = dump.pop('param_1')
dump['param2'] = dump.pop('_param_2')
dump['param3'] = dump.pop('paramThree')
return cls(**dump)
@classmethod
def from_dump_v3(cls, dump):
result = dict()
result['param1'] = dump.get('param_1')
result['param2'] = dump.get('_param_2')
result['param3'] = dump.get('paramThree')
return cls(**result)
、__init__
はA()
とfrom_dump_v*
指すIから選んだする必要が異なる実装を表します。
注:dump
はすべて3つのキーと値のペアを持つ辞書、つまりparam_1
,_param_2
およびparamThree
です。これを行うには
申し訳ありません。 より現実的な要件で質問を更新しました。 –