Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查Python中是否已经调用了对象?_Python_Object_Pygtk_Try Catch_Instantiation - Fatal编程技术网

如何检查Python中是否已经调用了对象?

如何检查Python中是否已经调用了对象?,python,object,pygtk,try-catch,instantiation,Python,Object,Pygtk,Try Catch,Instantiation,我使用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

我使用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。 我的问题是,我的尝试永远不会成功,我总是以失败告终,并重新创建一个自我

如何做到这一点?提前谢谢

if not hasattr(self, 'main'):
    self.main = MainWindow(self.factory.loginfo)
self.main.addServer(self.factory.logingo)
注意:
try:。。。除非:…
没有任何特殊例外,除非您知道自己在做什么。因为这隐藏了可能(和意外)的例外情况。相反,例如写:

try:
    ...
except AttributeError:
   ...
或者任何预期和将要处理的内容,而不是
AttributeError
(例如,
KeyError
indexer
ImportError
或其他内容) 并在try块中编写尽可能少的代码,例如,您可以这样编写上述代码:

try:
    self.main
except AttributeError:
    self.main = MainWindow(self.factory.loginfo)
self.main.addServer(self.factory.logingo)

这与此相当(有趣的是,
hasattr
本身使用了一个try-except!),但在这里使用hasattr更简洁明了。

我仍然遇到了与第一篇文章相同的问题。它总是认为Self.Maple不存在:-(因此,主窗口总是被称为代码中的逻辑),也许你应该自己解决它。