如何检查,如果变量不存在存在的实例?(How to check if instance exists

2019-10-21 23:31发布

我有一个按钮,导入一个模块的类。 类(varClass)创建了一个窗口。

如果我再次点击该按钮,我试试这个:

if var:
    var.toggleUI()
else :
    var = varClass()

但VAR没有按”存在,您打开玛雅后创建窗口的第一次。 我怎样才能得到这个工作?

Answer 1:

你可以捕捉NameError异常:

try:
    var.toggleUI()
except NameError:
    var = varClass()

如果您需要调用toggleUI第一次过,只是尽量名称本身:

try:
    var
except NameError:
    var = varClass()

var.toggleUI()

我不熟悉的玛雅,但如果你能在其他地方先定义的名称和简单地将它设置为None有,那么你的代码将如果没有更好的工作太。



Answer 2:

使用异常:

try:
    var.toggleUI()
except NameError:
    var = varClass()
    var.toggleUI()


Answer 3:

你可以使用dir函数

a=5
'a' in dir()
'b' in dir()

这将打印

True
False

所以你的情况

if 'var' in dir():
    var.toggleUI()
else :
    var = varClass()


Answer 4:

如果你这样做是一个按钮里面,你应该卸载管理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真理测试为假。 但它只会做,如果你做迫使它。

可能有用的: 假象回调欺骗片



Answer 5:

默认你的var ,并把它作为一个试验:

var = None
if var is None:
  var = varClass()
var.toggleUI()


文章来源: How to check if instance exists if variable not existing?
标签: python maya mel