Python 初始化函数变量

0 投票
1 回答
3002 浏览
提问于 2025-04-18 17:49

我有大约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

撰写回答