用python编写一个使用多个模型的类的最佳实践



我正在写下面的代码:

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。我还建议使用基类来处理Models之间的所有公共

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)

最新更新