2012-02-28 21 views
0

オブジェクトが存在する場合は属性を取得する必要があります。そうでない場合は、Noneまたは空の文字列またはデフォルトに設定します。これを行うための簡単な1行の方法はありますか?擬似コードの例についてはオブジェクトの属性を取得する最もクリーンな方法は何ですか?

gender = if Person then Person.gender else '' 
+0

をFunnily十分に、あなたの擬似コードは、有効なのCoffeeScriptとココです。 :) – AKX

+0

無関係ですが、大文字にした識別子はインスタンスではなくクラス名のように見えます。 –

答えて

8

あなたはgetattr()defaultパラメータを使用することができます。

gender = getattr(Person, "gender", "") 

これはPersonオブジェクトは、このような属性を持っている場合Person.genderからgenderを設定し、""になりますさもないと。

+0

あなたは* attritbute *( 'gender')が存在するかどうかをテストしますが、質問は欠落している*オブジェクト*(' Person')に関するものです。 – WolframH

+0

@WolframH: 'Person'という名前が定義されていれば、それは何らかのオブジェクトを指しており、そのオブジェクトは明らかに存在しています。その名前が定義されていない場合、私のコードは動作しません。あなたが話していることは本当にわかりません。 –

+0

違いは、例えば、 'Person'が間違った型のオブジェクトである場合に表示されます。別の(たぶん遠くにフェッチされた)例は、空のPerson(ブールコンテキストでは 'False')です。 – WolframH

2

が存在しない場合PersonFalse値を持っていると仮定すると:

gender = Person.gender if Person else '' 
関連する問題