如何在spyne中实现抽象模型
how to implement abstract model in spyne
我需要使用 Spyne 实现一个抽象模型。
事实上,举个简单的例子,我想管理一家车库业务。
然后我有以下 classes:
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))
]
当我想让我的车库管理所有车辆时,我只会获得它们的 Vehicle 属性(这里也称为 owner),而不是其他的。
有没有办法用 Spyne 管理抽象对象?
当然,一个简单的方法是:
class Garage(ComplexModel):
_type_info = [
('bikes',Array(Bike)),
('cars',Array(Car))
]
但我不喜欢它:如果我这样做,我每次创建新载具时都必须更改 "Garage" class...我希望我的车库 class 管理车辆,无论它是什么类型的车辆。可能吗?
对于 Spyne 2.12.1-beta,输出多态性应该可以使用 Array(Vehicle)
语法工作(当为输出协议启用时)。
我需要使用 Spyne 实现一个抽象模型。
事实上,举个简单的例子,我想管理一家车库业务。
然后我有以下 classes:
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))
]
当我想让我的车库管理所有车辆时,我只会获得它们的 Vehicle 属性(这里也称为 owner),而不是其他的。
有没有办法用 Spyne 管理抽象对象?
当然,一个简单的方法是:
class Garage(ComplexModel):
_type_info = [
('bikes',Array(Bike)),
('cars',Array(Car))
]
但我不喜欢它:如果我这样做,我每次创建新载具时都必须更改 "Garage" class...我希望我的车库 class 管理车辆,无论它是什么类型的车辆。可能吗?
对于 Spyne 2.12.1-beta,输出多态性应该可以使用 Array(Vehicle)
语法工作(当为输出协议启用时)。