0
私が目指しているのは、python3のオブジェクトを属性アクセスに関して通常どおりに動作させることです。ただし、通常のルックアップで属性が利用できない場合他の方法で値をフェッチ/計算する必要があります。オブジェクトにデフォルト値を持ついい(r)方法はありますか?
は、私は1つが__getattr__
メソッドを定義することによって、問題を解決できることを知っている:
def __getattr__(self, key):
if key == 'foo':
return calculate_default_foo()
elif key == 'bar':
return getattr(dfltobj, 'bar')
elif key == 'frob':
return 42
raise AttributeError
が、それは私がのpython3でこれを行うために、よりエレガントな方法があるかどうだろpython2そう感じています。 property
を定義するだけでは、その属性へのアクセスが完全にオーバーライドされるため、うまく機能しませんが、そうでなければ機能していれば良いアプローチになります。
を助けたホープビット。その意図は、 'foo.attr2'がデフォルト値を出すべきであるということです(それは、その場で計算する必要があります)。 – skyking
私の悪い!私は今それを得たと思う。 – mikelsr