这与Pass request to different class based on condition Python非常相似,但是我决定创建另一个问题,因为该问题的答案是正确的,但不适用于我的用例。我的问题措辞不佳,而且改变了。
我正在设计一种API,用于处理不同类型的车辆,例如汽车,公共汽车和厢式货车。有一个端点POST /vehicle
,它将采用已定义的主体。
{
'registration': 'str',
'date_of_purchase': 'datetime str',
'vehicle_type': 'car'
...
}
API入口点进入Vehicles.py,它执行一些逻辑。
我们要做的第一件事是基于vehicle_type加载对象。
if body[vehicle_type] == 'car':
passed_in_vehicle = Car(body)
elif body['vehicle_type'] == 'bus':
passed_in_vehicle = Bus(body)
...
此后,我们调用一个名为get_manufacturer()的方法,该方法将使用注册号调用第三方服务,并获取车辆制造商的名称。然后,我们希望将其路由到正确的制造商类别。
在python程序中,有多个类,包括:
每个类都具有相同的基本方法集。
此刻我在Vehicles.py的底部
if manufacturer = 'BMW':
bmw_service = BMWService()
bmw_service.register_vehicle(passed_in_vehicle)
elif manufacturer == 'FORD':
fordService = FordService()
fordService.register_vehicle(passed_in_vehicle)
...
但是,这不能扩展。根据条件路由到特定类的正确解决方案是什么?