我有一个按钮,导入一个模块的类。 类(varClass)创建了一个窗口。
如果我再次点击该按钮,我试试这个:
if var:
var.toggleUI()
else :
var = varClass()
但VAR没有按”存在,您打开玛雅后创建窗口的第一次。 我怎样才能得到这个工作?
我有一个按钮,导入一个模块的类。 类(varClass)创建了一个窗口。
如果我再次点击该按钮,我试试这个:
if var:
var.toggleUI()
else :
var = varClass()
但VAR没有按”存在,您打开玛雅后创建窗口的第一次。 我怎样才能得到这个工作?
你可以捕捉NameError
异常:
try:
var.toggleUI()
except NameError:
var = varClass()
如果您需要调用toggleUI
第一次过,只是尽量名称本身:
try:
var
except NameError:
var = varClass()
var.toggleUI()
我不熟悉的玛雅,但如果你能在其他地方先定义的名称和简单地将它设置为None
有,那么你的代码将如果没有更好的工作太。
使用异常:
try:
var.toggleUI()
except NameError:
var = varClass()
var.toggleUI()
你可以使用dir函数
a=5
'a' in dir()
'b' in dir()
这将打印
True
False
所以你的情况
if 'var' in dir():
var.toggleUI()
else :
var = varClass()
如果你这样做是一个按钮里面,你应该卸载管理var
到要导入的模块。 让模块处理实例和按钮使模块做繁重。 只要进口有没有副作用(其中,如果你这样做是正确的,应该不会有)Rendundant进口不受到伤害。
该模块的确是这样的:
class SampleGui(object):
# all sorts of good stuff here
_sample_gui_instance = None
def get_instance():
_sample_gui_instance = sample_gui_instance or SampleGui()
return _sample_gui_instance
和按钮少了点
import SampleGuiModule
SampleGuiModule.get_instance().toggleUI()
这是相同的检查,这是别人的答案的,但我想通过委派实例管理的模块,而不是按钮,你可以有复杂或初始化正在进行的任何级别和按钮,热键或其他脚本之间共享透明。
我使用保存的几个字符or
代替if... is None
; 这将是棘手的出于某种原因SampleGui
真理测试为假。 但它只会做,如果你做迫使它。
可能有用的: 假象回调欺骗片
默认你的var
,并把它作为一个试验:
var = None
if var is None:
var = varClass()
var.toggleUI()