我不是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