def METHOD_NAME(self, x, params=None, weights=None):
    if params is not None:
        return sum(
            [
                w * model.METHOD_NAME(x, params=params[model.name])
                for (w, model) in zip(weights, self.parametric_models)
            ]
        )
    return sum(
        [
            w * model.METHOD_NAME(x)
            for (w, model) in zip(self.weights, self.parametric_models)
        ]
    )