我想指定一个具有prizes
属性的对象。这可能是PrizeInfo
对象的列表,也可能是空列表。我正在寻找类似下面的代码的架构,除了这会返回以下错误:
"MySchema": {
"properties": {
"prizes": {
"type": "List['PrizeInfo', 'null']",
}
}
}
E TypeError: Too many parameters for typing.List; actual 2, expected 1
我正在使用这些模板来生成Python类。
“空”列表没有注释。无论列表内容必须具体如何,任何空列表对象都将满足List[...]
类型提示。
因此,如果允许空列表,请使用
List['PrizeInfo']
这允许任何具有0个或更多元素的列表,因此空列表包含在该提示中。
如果您想要在None
对象旁边允许使用null
值(QSON中的PrizeInfo
),那么请使用Union[...]
annotation和None
:
List[Union['PrizeInfo', None]]
如果你想说None
或PrizeInfo
对象列表是允许的(用JSON术语,null
或数组),那么使用
Union[List['PrizeInfo'], None]
你也可以使用Optional[...]
:
Optional[List['PrizeInfo']]
意思是同样的事情。但是,我不会在List[...]
暗示中使用它;这就好像你说的那样,元素的类型可能是可选的,这使得一个令人困惑的类型规范成为可能。