我如何写我的Request
类来说明有效载荷可以是Union[EcrPayload]
或Union[S3Payload]
?
class EcrPayload(CamelModel):
repository_name: str
version: str
class S3Payload(CamelModel):
bucket_name: str
object_key_name: str
class Request(CamelModel):
payload: Union[EcrPayload]
只需将Union
与您希望包含的两个类一起使用:
class Request(CamelModel):
payload: Union[EcrPayload, S3Payload] # accepts ECR and S3 payloads, but nothing else
注意,这意味着成员变量payload
必须是EcrPayload
或S3Payload
的一个实例,而不是其他。
如果您希望包含任何类型的CamelModel
(包括可能在将来定义的新模型EcsPayload
,LambdaPayload
或其他),您可以这样写:
class Request(CamelModel):
payload: CamelModel # any CamelModel is accepted, including ECR and S3
您可以使用相同的CamelModel
class Request(CamelModel):
payload: Union[CamelModel]