1
私はダックタイピングにはかなり新しいですし、次の質問があります。Pythonで存在しない属性を扱う最もエレガントな方法は何ですか?
はあなたがgetattr
組み込みを使用することができ、私は1つの単純な文で、典型的な取得値またはNone
のようなものを見たい
if(i is not None and i < 10):
私はダックタイピングにはかなり新しいですし、次の質問があります。Pythonで存在しない属性を扱う最もエレガントな方法は何ですか?
はあなたがgetattr
組み込みを使用することができ、私は1つの単純な文で、典型的な取得値またはNone
のようなものを見たい
if(i is not None and i < 10):
のようなもの、その後
try:
what_i_want = obj.some_attr
except AttributeError: # this attribute does not exist, or something other wrong happened
what_i_want = default_value_for_what_i_want
任意のより良い方法はあります:
what_i_want = getattr(obj, 'some_attr', default_value)
hasattrが条件付きの方が良いかもしれません。特に、目標が設定されていない場合は値を設定することです –
はいこれは実行方法です。ブランクの 'except'を使うのではなく、' AttributeError'をキャッチする必要があります。空の 'except'は他の正当なエラーを隠します。 – Cfreak
@Cfreakええ、それは正しいですが、私はそれが私が探しているものに関連していないと思うが。それを修正する。 – xxbidiao
また、['getattr(obj、 'some_attr'、default_value)'](https://docs.python.org/3.5/library/functions.html#getattr)を使用することもできます。 –