我正在写下面的代码:
class Model_1:
def __init__(self,some parameters):
def simulate(self,steps,Number of simulation):
....
return array
class Model_2:
def __init__(self,some other parameters):
def simulate(self,steps,Number of simulation):
....
return array
class Object:
def __init__(self,some other parameters):
def get_price(self,Model, some other parameters):
array = Model(parameters).simulate(parameters)
array = array + do some stuff on array
return array
我的代码由几个模型组成(所以不仅仅是Model_1和model2),它们都有一个返回数组的函数simulate(self,steps,Number of simulation)
。现在,根据模型的不同,模拟是不一样的,我不确定在上面的代码片段中编写这行array = Model_number.simulate(parameters)
的最佳实践。你最好的建议是什么?
可以创建一个Model
的实例,并将其作为参数发送给get_price
。我还建议使用基类来处理Model
s之间的所有公共
class Model(ABC):
def __init__(self, *some_parameters):
self.some_parameters = some_parameters
# now all the Models can access some_parameters tuple with self.some_parameters
@abstractmethod
def simulate(self, steps, number_of_simulation):
pass
class Model1(Model):
def __init__(self, *some_parameters):
super().__init__(*some_parameters)
def simulate(self, steps, number_of_simulation):
array = []
return array
class Model2(Model):
def __init__(self, *some_parameters):
super().__init__(*some_parameters)
def simulate(self, steps, number_of_simulation):
array = []
return array
class Object:
def __init__(self, some_other_parameters):
pass
def get_price(self, model, steps, number_of_simulation):
array = model.simulate(steps, number_of_simulation)
return array
用途:
model1 = Model1(1, 2, 3)
model2 = Model2('asd', 'qwe')
model3 = Model2('zxc')
ob = Object(['some_other_parameters'])
ob.get_price(model1, 1, 1)
ob.get_price(model2, 2, 5)
ob.get_price(model3, 3, 7)