2013-02-17 34 views

答えて

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

が動作するはずです。

0

A、わずかに超える一般的な解決策の維持すべてのメンバー:

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 

だそれはIDがNoneかどうかをチェックしませんが、それは元の質問の一部ではありませんでした。

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

これを行うにはより良い方法がありますか? –

5

これは、任意の深さにも拡張する必要があります

reduce(lambda obj, attr : getattr(obj, attr, None), ("id","num"), myobject) 
関連する問題