Python初始化函数变量

时间:2014-08-19 16:52:03

标签: python initialization

所以我有~200个事件处理程序,其中约90%总是使用3个变量(a,b,c)。在每个事件处理程序的开头,我总是将这些变量初始化为:

a = b = c = None

之前尝试从事件中获取它们:

a, b, c = event.GetData()

因此,如果我在except块中结束,则这些变量存在并且可以使用(如果可用)。

有没有办法将这些变量初始化为None,而不在每个事件处理程序的开头显式写入?这些事件处理程序方法都是应用程序事件处理程序类的一部分,如果这有任何区别。

我觉得这是一个愚蠢的问题,但我正在尝试清理这些事件处理程序,并希望在进行更改之前探索所有可能性。

1 个答案:

答案 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