Assume I have 4 classes class ModelA
, class ModelB
, class ModelC
class ModelD
.
I have another class LongModel
. I want to choose from the above 4 classes as the BaseClass for the class LongModel
, based on model_name
. What's the right way to do it. As of now, I am doing the following:
def get_long_model(model_name):
if model_name == 'A':
base_class = Model_A
if model_name == 'B':
base_class = Model_B
if model_name == 'C':
base_class = Model_C
if model_name == 'D':
base_class = Model_D
return LongModel(base_class)
I really don't want to use a function. Can we do this over the LongModel
itself?
For eg:
class LongModel():
def __init__(self, model_name):
if model_name == 'A':
# Assign base class for LongModel
or some neat way using class or anything.
If I use composition then,
class LongModel():
def __init__(self, model):
self.model = model
long_model = LongModel(ModelA)
Then, assume ModelA has some attributes, which I want to use inside LongModel
say the name, I have to add self.name = model.name
, for one or 2 attributes its okay. But for all/most attributes isn't it difficult?