辞書からクラスをインスタンス化しようとしています。クラス コンストラクターでは、指定されていない場合、いくつかのクラス メンバーに既定値を割り当てます。
class Country(object):
def __init__(self, continent, country = "Zimbabwe"):
# do stuff
インスタンス化元の dict には、クラス メンバーと同じ名前のキーがあります。私は次のようにdictからインスタンス化します:
country = Country(
continent = dictionary["continent"],
country = default_value if "country" not in dictionary else dictionary["country"]
)
ご覧のとおり、ディクショナリにクラス名に対応するキーがない可能性があります。この場合、キー「国」が存在しない場合、クラス メンバーの国をデフォルト値、つまり「ジンバブエ」のままにします。これを行うエレガントな方法はありますか?次のようなもの:
country = dictionary["country"] if "country" in dictionary else pass
ただし、これは不可能です。Country クラスの静的メンバーとしてデフォルト値の辞書を持つことができることを知っています。
country = Country.default_values["country"] if "country" not in dictionary else dictionary["country"]
しかし、それはやり過ぎのようです。もっと良い方法はありますか?