0

我想有在Python這樣的功能:函數參數是一個數學FUNC

class EvaluationStrategy(object): 
    def __init__(self, test_function): 

    self.test_function = test_function 

class TestFunction(object): 
    def objective_function(self, design_variable1, design_variable2): 
     print("external function called") 
     intermediate_results = self.__internal_function_evaluation_() 

     v1= intermediate_results(0) 
     v2= intermediate_results(2) 

     v=test_function 

調用在其中EvaluationStrategy包含一個功能,testfunction例如,X^2或類似的東西后應該根據x來定義。但是如果x沒有定義,Python總會拋出一個錯誤,所以我用lambda嘗試了它,但是如果沒有定義x之前它也不起作用。 如果有人可以請幫我。提前感謝。

+0

你可以添加的,你會怎麼稱呼這個實際,具體的例子,什麼結果,你會期待什麼呢? – trincot

+0

我稱之爲EvaluationStrategy的子功能,並且必須插入一個函數... >>評估(x ** 2) 然後評估函數在循環內分配x的新值,併爲每個值計算x^2 類似 >> 2 - > x^2 = 4 >> 4 - > x^2 = 16 – basti

+0

對不起,我看不到所有這一切之間的聯繫。 'Evaluate'?我在你的代碼示例中看不到這個函數。你從哪裏得到'x'的價值,就像2?它在某些方法調用中給出?你能提供一個確切的腳本,你希望能夠執行並提供所需的輸出嗎?這將有助於確定您正在尋找哪個實現。 – trincot

回答

0

你不清楚你在問什麼(看我的評論),但它似乎是你需要的一個組成部分是如何傳遞一個函數作爲參數並存儲該函數供以後執行。

這裏是你如何能做到這一點:

class EvaluationStrategy: 
    def __init__(self, test_function): 
     self.test_function = test_function 

    def evaluate(self, arg): 
     return self.test_function(arg) 

ev = EvaluationStrategy(lambda x: x**2) 

for i in range(2,5): 
    print(i, ev.evaluate(i)) 
+0

謝謝!這是我搜索的那個,從來沒有試圖把lambda的東西放入我的輸入。------------------------ 你能幫我解決另一個問題,太? -------------------------- 我需要了解爲什麼while循環正在創建數組數組......等等.- -------------------- 每次下一輪開始舊的參數更改爲新的(如預期),但現在顯示爲一個數組(下一個循環: array [array [xy]])------------------------------- 這是否與Error有一些共同之處:對象數組可能是自引用的 – basti

+0

雖然可以,但while循環本身並不需要與列表有任何關係。另外,如果您將其與列表結合使用,它不會強制描述您所描述的行爲。我建議你發佈一個關於這個問題的新問題,並且包含不符合你想要的代碼。如果我在發佈時不在身邊,會有很多人來幫助你。 – trincot

相關問題