8

どのように評価しますか

a = myobject.id.number

myobjectがである場合はNoneを返しますNone

ビルトインgetattr?多分getattr(myobject, "id.number", None)

4

6 に答える 6

6

これは、任意の深さにうまくスケーリングする必要があります。

reduce(lambda obj, attr : getattr(obj, attr, None), ("id","num"), myobject)
于 2013-02-17T20:58:28.300 に答える
6
getattr(getattr(myobject, "id", None), "number", None)

動作するはずです。

于 2013-02-17T19:51:38.197 に答える
1

ここにワンライナーがあります

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

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

于 2013-02-17T20:53:12.893 に答える
0
return myobject.id.number if myobject else None
于 2013-02-17T20:57:47.977 に答える
0

すべてのメンバーを視野に入れた、やや一般的なソリューション:

if myobject and myobject.id and myobject.id.number:
    a = myobject.id.number
else:
    a = None
于 2013-02-17T19:51:04.377 に答える