オブジェクトが存在する場合は属性を取得する必要があります。そうでない場合は、None
または空の文字列またはデフォルトに設定します。これを行うための簡単な1行の方法はありますか?擬似コードの例についてはオブジェクトの属性を取得する最もクリーンな方法は何ですか?
:
gender = if Person then Person.gender else ''
オブジェクトが存在する場合は属性を取得する必要があります。そうでない場合は、None
または空の文字列またはデフォルトに設定します。これを行うための簡単な1行の方法はありますか?擬似コードの例についてはオブジェクトの属性を取得する最もクリーンな方法は何ですか?
:
gender = if Person then Person.gender else ''
あなたはgetattr()
にdefault
パラメータを使用することができます。
gender = getattr(Person, "gender", "")
これはPerson
オブジェクトは、このような属性を持っている場合Person.gender
からgender
を設定し、""
になりますさもないと。
あなたは* attritbute *( 'gender')が存在するかどうかをテストしますが、質問は欠落している*オブジェクト*(' Person')に関するものです。 – WolframH
@WolframH: 'Person'という名前が定義されていれば、それは何らかのオブジェクトを指しており、そのオブジェクトは明らかに存在しています。その名前が定義されていない場合、私のコードは動作しません。あなたが話していることは本当にわかりません。 –
違いは、例えば、 'Person'が間違った型のオブジェクトである場合に表示されます。別の(たぶん遠くにフェッチされた)例は、空のPerson(ブールコンテキストでは 'False')です。 – WolframH
が存在しない場合Person
はFalse
値を持っていると仮定すると:
gender = Person.gender if Person else ''
をFunnily十分に、あなたの擬似コードは、有効なのCoffeeScriptとココです。 :) – AKX
無関係ですが、大文字にした識別子はインスタンスではなくクラス名のように見えます。 –