Python 初始化函数变量
我有大约200个事件处理器,其中90%的处理器总是使用3个变量(a、b、c)。在每个事件处理器的开头,我总是这样初始化这三个变量:
a = b = c = None
然后再尝试从事件中获取它们:
a, b, c = event.GetData()
这样,如果我进入了异常处理块,这些变量就存在了,并且可以使用(如果有的话)。
有没有办法让这三个变量总是初始化为None,而不需要在每个事件处理器的开头都写一次?这些事件处理器方法都是一个应用程序事件处理类的一部分,如果这有什么不同的话。
我觉得这个问题有点傻,但我想整理一下这些事件处理器,想在做出更改之前探索所有可能性。
1 个回答
0
不,没办法自动初始化它们。
也许你会觉得这样更简洁一些?
try:
result = event.GetData()
except Exception as e:
result = (None, None, None)
a, b, c = result
另外,你可以把这些事件放在一个小的辅助类里:
class EventData(object):
def __init__(self, event):
try:
result = event.GetData()
self.exception = None
except Exception as e:
result = (None, None, None)
self.exception = e
self.a, self.b, self.c = result
这样事件处理程序就可以用它来更方便地访问事件数据:
def handler(event):
data = EventData(event)
if data.exception:
print "uh oh, there was an error:", data.exception
return
print "event data:", data.a, data.b, data.c