所以我有~200个事件处理程序,其中约90%总是使用3个变量(a,b,c)。在每个事件处理程序的开头,我总是将这些变量初始化为:
a = b = c = None
之前尝试从事件中获取它们:
a, b, c = event.GetData()
因此,如果我在except块中结束,则这些变量存在并且可以使用(如果可用)。
有没有办法将这些变量初始化为None,而不在每个事件处理程序的开头显式写入?这些事件处理程序方法都是应用程序事件处理程序类的一部分,如果这有任何区别。
我觉得这是一个愚蠢的问题,但我正在尝试清理这些事件处理程序,并希望在进行更改之前探索所有可能性。
答案 0 :(得分: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