2

Groovy には非常に便利な operator があり?.ます。これは、オブジェクトがそうでないかどうかをチェックnullし、そうでない場合は、メソッドまたはプロパティにアクセスします。Pythonで同じことを行うことはできますか?

私が見つけた最も近いものは、三項条件演算子です。今、私はやっています

l = u.find('loc')
l = l.string if l else None

一方、書くのはいいでしょう

l = u.find('loc')?.string

更新getattr以下に記載されていることに加えて、リストでそれを行う比較的良い方法を見つけました:

[x.string if x else None for x in [u.find('loc'), u.find('priority'), ...]]

除外する場合の別の方法None

[x.string for x in [u.find('loc'), u.find('priority'), ...] if x]

4

1 に答える 1

4

このようなものを書くことができます

L = L and L.string

三項の例のように、これは L の「Falsy」値に対して「else」部分を実行することに注意してください

特に None をチェックする必要がある場合は、書く方が明確です

if L is not None:
    L = L.string

または「Falsy」バージョンの場合

if L:
    L = L.string

getattrこれも使いづらいと思います

L = getattr(L, 'string', None)
于 2013-10-24T02:01:45.840 に答える