Python-使用不同的参数调用覆盖的方法

时间:2018-11-27 17:44:25

标签: python-3.x oop

我正在使用两个用于对数据进行建模/预测的类,并且希望使用一个可以预处理并调用这两个类的预测方法的函数。

下面是一个简化的示例:

class Model(object):

    def __init__(self, mean):
        self.mean = mean

    def predict():
        pass

class Arithmetic(Model):

    def predict(self, n, factor, **alpha=None, beta=None**):
        return [self.mean + factor*x for x in range(n)]

class TwoStep(Model):

    def predict(self, n, alpha, beta, **factor=None**):
        return [self.mean + alpha*int((x+1)/2) + beta*int(x/2) for x in range(n)]

def run_prediction(data, n, PredictionModel, alpha=None, beta=None, factor=None):
    """
    model processing    
    """

    model = PredictionModel(data)
    result = model.predict(n, alpha=alpha, beta=beta, factor=factor)
    print(result)

run_prediction(3, 8, Arithmetic, factor=2)
run_prediction(3, 8, TwoStep, alpha=3, beta=1)

无论如何,可以从run_prediction调用预测方法,而无需在预测方法中创建未使用的None参数(用**表示)(由于使用其他模块,因此我无法在实际代码中执行此操作) ?

还是有比未使用的参数更好的解决方案?

0 个答案:

没有答案