我有以下代码:
class Test:
def __init__(self, d):
try:
self.row_number = 1
self.name = d['name']
self.address = d['address']
self.__err_flag = 0
except Exception, ex:
self.__err_flag = 1
finally:
self.val = ex.message if self.__err_flag else None
self.__err_flag
的唯一目的是检查是否发现了异常。我显然不能满足条件:self.val = ex.message if ex else None
。
有没有更好的方法来检查finally块中是否捕获到异常?此外,当我做以下时:
t = Test({'name': 'kitty-katty'})
dir(t) // print _Test__err_flag
有没有办法隐藏课程的属性,以便他们在执行dir()
时不会显示?
答案 0 :(得分:1)
如果您只想在发生异常时分配self.val
,请将分配放在except
而不是finally
。
class Test:
def __init__(self, d):
self.val = None
try:
self.row_number = 1
self.name = d['name']
self.address = d['address']
except Exception, ex:
self.val = ex.message