想象一下我在python中有以下内容(实际语言并不重要,因为我在php等其他语言中也有这个问题.基类"CarModel"和来自"CarModel"的派生类"TruckModel".
class CarModel:
def __init__(self):
self.__wheel_count: int = 0
def set_wheel_count(self, value: int) -> None:
self.__wheel_count = value
class TruckModel(CarModel):
def __init__(self):
super().__init__()
self.__load_in_kg: int = 0
def set_load_in_kg(self, value: int) -> None:
self.__load_in_kg= value
如果我现在有一个映射类,它应该将例如一个dict转换成我的Model,我如何为我的派生类重用映射方法? 尤其是如果我的基类有很多setter方法,我必须重复代码,这是我不喜欢的("ry").
class VehicleMapper:
def map_car_dict_to_car_model(dict: Dict) -> CarModel:
model: CarModel = CarModel()
model.set_wheel_count(dict['wheelCount'])
return model
def map_truck_dict_to_truck_model(dict: Dict) -> TruckModel:
model: TruckModel= TruckModel()
model.set_load_in_kg(dict['loadInKg'])
model.set_wheel_count(dict['wheelCount']) # ??? How can I re-use the map-method for the base class here ???
return model
我可以把映射方法移到模型类中,这样就可以了.但是我被教导,模型类应该只"保存"数据,而不应该做任何事情.这就是为什么有映射器类,对吧?