我需要使用Spyne实现一个抽象模型。
事实上,让我们说 - 作为一个简单的例子 - 我想管理车库业务。
然后我有以下课程:
class Vehicle(ComplexModel):
''' this class is abstract '''
_type_info = [
('owner',Unicode)
]
class Car(Vehicle):
_type_info = [
('color',Unicode),
('speed',Integer)
]
class Bike(Vehicle):
_type_info = [
('size',Integer)
]
class Garage(ComplexModel):
_type_info = [
('vehicles',Array(Vehicle))
]
当我想让我的车库管理所有车辆时,我只会获得他们的车辆属性(也就是所有者),而不是其他车辆。
有没有办法用Spyne管理抽象对象?
当然,一个简单的方法是:
class Garage(ComplexModel):
_type_info = [
('bikes',Array(Bike)),
('cars',Array(Car))
]
但我不喜欢它:如果我这样做,每次创建一个新的Vehicle类时我都要改变我的“车库”类...我希望我的车库类能够管理车辆,无论什么类型它是车辆。有可能吗?
答案 0 :(得分:1)
使用Spyne 2.12.1-beta,输出多态性应该可以使用Array(Vehicle)
语法(当为输出协议启用时)。