Мы используем Swagger 2.0 для определения нашего API.У нас есть такая модель в swagger.yaml:
Reading:
title: Reading
type: object
discriminator: type
properties:
type:
$ref: '#/definitions/ReadingType'
SensorReading:
description: Teralytic probe reading
allOf:
- $ref: "#/definitions/Reading"
- properties:
value:
description: Sensor reading value
type: number
format: float64
Мы используем swagger-codegen 2.4.0 для генерации клиента Python и используем python 3.7.0.
Проблемамы имеем дело с тем, когда мы вызываем нашего клиента:
response = api_instance.readings_query(start_date=start_date, end_date=end_date)
for result in api_response:
for reading in result.readings:
if reading.type == 'SensorReading':
reading.__class__ = SensorReading
pprint(reading)
Это то, как мы предполагали, что «приведем» наше чтение к его определенному типу, но это, похоже, не работает.
Мы получаем ошибку, похожую на:
AttributeError: 'SensorReading' object has no attribute '_value'
Похоже, что swagger-codegen для python не совсем это поддерживает, если мы что-то полностью не упустили.