我使用PyGTK创建了一个GUI。
我想在某些情况下为我的GUI添加更多UI元素。 我做了类似的事情:
try:
self.main.addServer(self.factory.logingo)
except:
self.main = MainWindow(self.factory.loginfo)
当我的对象self.main(我的gtk.Window对象)已经存在时,我想调用addServer。但如果它不存在,我想调用MainWindow创建一个gtk.Window。 我的问题是,我的尝试永远不会成功,我总是在除外,并重新创建一个self.main。
怎么做?提前谢谢。
答案 0 :(得分:0)
if not hasattr(self, 'main'):
self.main = MainWindow(self.factory.loginfo)
self.main.addServer(self.factory.logingo)
PS:除非您知道自己在做什么,否则请try: ... except: ...
没有任何具体的例外情况。因为这隐藏了可能的(和意外的)异常。相反,例如写:
try:
...
except AttributeError:
...
或任何预期且将被处理的内容,而不是AttributeError
(例如,KeyError
或IndexError
或ImportError
或其他内容)
并在try块中尽可能少地编写代码,例如,您可以编写如下代码:
try:
self.main
except AttributeError:
self.main = MainWindow(self.factory.loginfo)
self.main.addServer(self.factory.logingo)
这相当于那个(有趣的是,hasattr
本身使用了一个尝试,除了!),但是使用hasattr在这里更清洁,更短。