以一种优雅的方式检查Pydantic是否List不为空

时间:2020-04-27 21:13:01

标签: python pydantic

假设我有一些BaseModel,并且我想检查一下它的options列表是否为空。我可以用validator做到完美:

class Trait(BaseModel):
    name: str
    options: List[str]

    @validator("options")
    def options_non_empty(cls, v):
        assert len(v) > 0
        return v

还有其他更优雅的方法吗?

2 个答案:

答案 0 :(得分:2)

如果要使用var name: String? = nil switch name { case let actualName? : print("Hello \(actualName)") default : print("Hello, anonymous") }

@validator

Python假定空列表的 boolean-ess 为False

如果您不想使用return v if v else doSomething

在Pydantic中,使用conlist

@validator

答案 1 :(得分:1)

在Python中,空列表为假,而具有任意数量元素的列表为真:

>>> bool([])
False
>>> bool([1,2,3])
True
>>> bool([False])
True
>>> bool([[]])
True

这意味着您可以简单地assert vassert Trait.options来确认列表为非空。