2017-03-14 3 views
1

私はダックタイピングにはかなり新しいですし、次の質問があります。Pythonで存在しない属性を扱う最もエレガントな方法は何ですか?

はあなたがgetattr組み込みを使用することができ、私は1つの単純な文で、典型的な取得値またはNoneのようなものを見たい

if(i is not None and i < 10): 
+1

はいこれは実行方法です。ブランクの 'except'を使うのではなく、' AttributeError'をキャッチする必要があります。空の 'except'は他の正当なエラーを隠します。 – Cfreak

+0

@Cfreakええ、それは正しいですが、私はそれが私が探しているものに関連していないと思うが。それを修正する。 – xxbidiao

+3

また、['getattr(obj、 'some_attr'、default_value)'](https://docs.python.org/3.5/library/functions.html#getattr)を使用することもできます。 –

答えて

2

のようなもの、その後

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) 
+0

hasattrが条件付きの方が良いかもしれません。特に、目標が設定されていない場合は値を設定することです –

関連する問題