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