どのように評価しますか
a = myobject.id.number
myobjectがである場合はNoneを返しますNone
ビルトインgetattr
?多分getattr(myobject, "id.number", None)
?
どのように評価しますか
a = myobject.id.number
myobjectがである場合はNoneを返しますNone
ビルトインgetattr
?多分getattr(myobject, "id.number", None)
?
これは、任意の深さにうまくスケーリングする必要があります。
reduce(lambda obj, attr : getattr(obj, attr, None), ("id","num"), myobject)
getattr(getattr(myobject, "id", None), "number", None)
動作するはずです。
ここにワンライナーがあります
a = myobject is not None and myobject.id.number or None
id が None かどうかはチェックしませんが、それは元の質問の一部ではありませんでした。
return myobject.id.number if myobject else None
すべてのメンバーを視野に入れた、やや一般的なソリューション:
if myobject and myobject.id and myobject.id.number:
a = myobject.id.number
else:
a = None