2016-09-28 6 views
3
class A(object): 
     a = 1 
     b = 0 
     c = None 
     d = None 
a_obj=A() 
a_list = ['a', 'b', 'c', 'd'] 
attrs_present = filter(lambda x: getattr(a_obj, x), a_list) 

ここでは、0と有効な値の両方が必要です。私は比較を使用したくない== 0属性を取得するPython

これを得る方法はありますか? 助けてもらえますか、ありがとうございました。

答えて

2

あなたは、cdNone複数可)を除外しis Noneまたはis not Noneを使用する場合:

attrs_present = filter(lambda x: getattr(a_obj, x, None) is not None, a_list) 
# NOTE: Added the third argument `None` 
#  to prevent `AttributeError` in case of missing attribute 
#  (for example, a_list = ['a', 'e']) 

あなたがcdを含めたい場合は、hasattrを使用します。

attrs_present = filter(lambda x: hasattr(a_obj, x), a_list) 
+1

ありがとう@falsetru 。 –

+1

答えとしてマークすることで、さらに感謝することができます。 ;) – haliphax

関連する問題