调用前组合函数

时间:2019-02-09 23:01:08

标签: python python-3.x function

我正在尝试解决python中的以下问题:我有一个包含另一个类(例如,Container)的实例的类(我们称之为Worker)。 Worker实例具有一种方法(find_value),该方法计算一个相当复杂的数学公式,由于每个实例取决于其属性,因此每个实例都略有不同。然后,Container类包含一个对来自其Worker实例的所有贡献求和的方法。现在,我基本上将其实现为对所有实例进行迭代的for循环,并为每个实例调用find_value函数。也许通过一些代码更容易理解:

class Container:
    def __init__(self):
        # Each worker will have different values for its attributes
        self.workers = self.create_workers()

    def find_total_value(self, x, y, z):
        return sum([w.find_value(x, y, z) for w in self.workers])


class Worker:
    def __init__(self):
    # Initialise attributes that affect result returned by self.find_value
    # will be different for each instance

    def find_value(self, x, y, z)
        value = # Some complicated mathematical formula based on numpy 
                # functions that uses the instance attributes
        return value

问题现在出在下面:我想使用find_total_value函数 用于数值模拟(基本上使用scipy例程求解与时间有关的微分方程)。但是,该函数中的for循环会大大降低计算速度,这可能会让人想到。创建完所有工作人员之后,他们的属性在仿真过程中将不再更改。

所以我的问题是:是否可以预先生成find_total_value函数作为其他函数的总和?这样,该函数就好像只涉及一个巨大的数学表达式(find_value实例的Worker函数的所有数学表达式的组合一样?我不确定是否使用了正确的数学表达式)这里的术语,因此如果需要进一步的说明,我很乐意编辑我的问题。

0 个答案:

没有答案