检查存在和是否存在是一定的值

时间:2012-08-09 22:26:39

标签: python

我经常需要检查类的实例是否具有属性,如果该属性存在,则与其值进行比较。除了以下之外,没有办法做到吗?

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

2 个答案:

答案 0 :(得分:6)

您可以调用getattr,而不是使用点符号,如果命名属性不存在,则可以返回默认值:

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

如果house没有名为&#39; garage&#39;的属性,getattr只需要评估为不等于&#39; 3 car&#39;。< / p>

答案 1 :(得分:5)

您可以“合并条件表达式”,如Martin Fowler所述:http://sourcemaking.com/refactoring/consolidate-conditional-expression#permalink-15

基本上,任何包含if语句的if语句实际上只有1,如果语句带有和之间的话!

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