在if语句中检查后引用可能不存在的变量是否安全?

Lew*_*wis 1 python logic if-statement boolean

假设我有一个名为prop的成员的myObject类.我有一个变量var,可能是也可能不是myObject.我想检查prop是否包含某个值,如果是,则执行某些操作,如果没有,或者var不是myObject,请执行.

执行以下操作是否安全:

if isinstance(var, myObject) and var.prop == 10:
    #Do something
Run Code Online (Sandbox Code Playgroud)

基本上,如果第一部分的计算结果为False,是否可以保证不会检查if语句的第二部分?如果检查即使var不是myObject,也会引发错误.

sen*_*rle 5

回答你的问题,是的,and短路.但我不这样做.更好的方法是使用hasattrtry, except阻止.

if hasattr(var, 'prop') and var.prop == 10:
    print var.prop
Run Code Online (Sandbox Code Playgroud)

或者(如果一个无用的var出现是不寻常的):

try:
    print var.prop
except AttributeError:
    print "propless var"
Run Code Online (Sandbox Code Playgroud)