我不是100%确定这被称为懒惰评估或不,但我希望在Python中做到这一点。防止类实例被评估,直到它的参数已被设置
我有一个“设置向导”,用户将经历并创建一些全局变量,这些全局变量将用作类中的参数。
var = myClass(param1, param2)
只有全局变量param1和param2存在时才能被评估。但是,我需要var来存在,因为我正在关联var0 = var.func
,这是myClass中的一个函数。稍后在应用程序中,将调用var0并执行func()。
更新
这里有点我的代码:
class myClass:
def __init__(self, param1, param2):
self.param1 = param1
self.param2 = param2
#------------------------------------------------------------------------
def myFunction(self):
"""
Some work here using self.param1 and self.param2
"""
def myFunction2(self):
"""
Some work here using self.param1 and self.param2
"""
def myFunction3(self):
"""
Some work here using self.param1 and self.param2
"""
myInstance = myClass(PARAM1, PARAM2)
myDict = {}
myDict["key1"] = myInstance.myFunction
myDict["key2"] = myInstance.myFunction2
myDict["key3"] = myInstance.myFunction3
# and so on...
PARAM1
和PARAM2
被填充是以通过wxPython的向导内部行为的用户全局变量。问题是myInstance
无法在初始化时进行评估,因为PARAM1
和PARAM2
尚不存在。但是,字典键在初始化时与各种功能相关联,因为它们不会随时间而改变。
想法?
你可以在这里提供更多的细节吗?没有办法阻止'myClass(param1,param2)'立即评估param1和param2。具体取决于你需要做什么,你可能能够将你的一些对象包装在一个lambda表达式中,并在稍后对它们进行评估。但是你需要展示一个完整的例子(即使它是假的)。 – BrenBarn 2012-07-11 17:28:14
没有更多的细节,这并不是真正的问题。 – Marcin 2012-07-11 17:39:43
“我正在关联var0 = var.func”。除非在这里有更多的事情发生,否则稍后在应用程序中调用'var.func'会更简单很多。 – JAB 2012-07-11 17:40:54