我尝试使用以下代码,但看起来很难看
tmp = ob1.fun1
result = None
if tmp is not None:
global result
result = tmp.fun2
有更好的方法吗?
答案 0 :(得分:1)
如果您希望result
None
ob1.fun1
None
或fun2
作为属性不存在,那么您可以使用getattr
并使用None
作为默认值。请注意,getattr(None, 'attr', something)
将返回something
。
result = getattr(ob1.fun1, 'fun2', None)
答案 1 :(得分:0)
使用EAFP(更容易请求宽恕而非许可)方法。在try / except中包装它并相应地处理您的异常:
result = None
try:
result = ob1.fun1.fun2
except AttributeError:
# do your exception handling here
您还可以使用hasattr检查fun1
中是否有ob1
result = None
if hasattr(ob1, 'fun1'):
res = ob1.fun1.fun2
else:
print('no fun1 found in ob1')
# or raise an Exception
答案 2 :(得分:0)
怎么样:
if t.fun1 is not None:
result = t.fun1.fun2
else:
result = None