5

クラスのインスタンスにプロパティがあるかどうかを頻繁に確認し、そのプロパティが存在する場合は、その値と比較する必要があります。次のこと以外にそれをする方法はありませんか?

if house.garage:
    if house.garage == '3 car':
        # do something with house.garage
4

2 に答える 2

6

ドット表記を使用する代わりに、を呼び出すことができますgetattr。これにより、名前付き属性が存在しない場合にデフォルト値を返すことができます。

if getattr(house, 'garage', "") == '3 car':
    # proceed

house'garage'という名前の属性がない場合は、'3car'getattrと等しくないものに評価する必要があります。

于 2012-08-10T00:46:19.587 に答える
5

Martin Fowlerが概説しているように、ここで「条件式を統合」できます:http ://sourcemaking.com/refactoring/consolidate-conditional-expression#permalink-15

基本的に、内部に別のifステートメントを含むifステートメントは、実際には1つのifステートメントであり、その間にandがあります。

if house.garage:
    if house.garage == '3 car':
        # do something with house.garage

になります

if house.garage and house.garage == '3 car':
    # do something with house.garage
于 2012-08-09T23:40:48.730 に答える