0

我需要使用 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))
    ]

但我不喜欢它:如果我这样做,每次创建新的车辆类时,我都必须更改我的“车库”类......我希望我的车库类管理车辆,无论它是什么类型的车辆是。可能吗?

4

1 回答 1

1

Array(Vehicle)使用 Spyne 2.12.1-beta,输出多态性应该与语法一起工作(当为输出协议启用时) 。

请在此处查看工作示例:https ://github.com/arskom/spyne/blob/a2d0edd3be5bc0385548f5212b7b4b6d674fd610/examples/xml/polymorphic_array.py

于 2015-07-17T16:54:16.030 回答