我想指定一个具有prizes
属性的对象。这可能是PrizeInfo
对象的列表,也可能是空列表。我正在寻找类似于以下代码的架构,除了会返回以下错误:
"MySchema": {
"properties": {
"prizes": {
"type": "List['PrizeInfo', 'null']",
}
}
}
E TypeError: Too many parameters for typing.List; actual 2, expected 1
我正在使用这些模板来生成Python类。
答案 0 :(得分:3)
“空”列表没有注释。任何空列表对象都将满足List[...]
类型的提示,而不管列表内容的具体内容如何。
因此,如果允许使用空列表,请使用
List['PrizeInfo']
这允许包含0个或多个元素的任何列表,因此该提示中包含空列表。
如果您是说None
对象旁边允许使用null
值(JSON中的PrizeInfo
),请使用Union[...]
annotation和None
:
List[Union['PrizeInfo', None]]
如果您想说允许使用None
或PrizeInfo
对象列表(以JSON术语,null
或数组),请使用
Union[List['PrizeInfo'], None]
您也可以使用Optional[...]
:
Optional[List['PrizeInfo']]
表示同一件事。但是,我不会在List[...]
提示中使用它。看起来就像是您在说元素的类型可能是可选的,导致类型说明混乱。