2013-02-17 60 views
5

मैंपायथन: Getattr के साथ किसी ऑब्जेक्ट की विशेषता का गुण कैसे प्राप्त करें?

a = myobject.id.number 

कैसे मूल्यांकन और वापसी नहीं करता है, तो यह MyObject None

साथ

है निर्मित getattr? शायद getattr(myobject, "id.number", None)?

+1

कोई विशेष उपयोग के मामले तो आप इस के लिए मन में है है? –

उत्तर

3
getattr(getattr(myobject, "id", None), "number", None) 

काम करना चाहिए।

0

एक थोड़ा अधिक ध्यान में रखते हुए सामान्य समाधान रखते हुए सभी सदस्यों:

if myobject and myobject.id and myobject.id.number: 
    a = myobject.id.number 
else: 
    a = None 
1

यहाँ एक एक लाइनर

a = myobject is not None and myobject.id.number or None 

यह जाँच नहीं पड़ता कि आईडी नहीं है, लेकिन वह मूल प्रश्न का हिस्सा नहीं था।

0
return myobject.id.number if myobject else None 
+0

क्या ऐसा करने के लिए एक अच्छा तरीका है? –

5

यह किसी भी गहराई तक अच्छी तरह से बड़े पैमाने चाहिए:

reduce(lambda obj, attr : getattr(obj, attr, None), ("id","num"), myobject)