pydantic 基本模板

pydantic使用

pydantic的参考文档pydantic使用

pydanitc模板

目标检测框

from pydantic import BaseModel, field_validator, model_validator, Field
from typing import List

class KeyPoint(BaseModel):
    x : int
    y : int

class Box(BaseModel):
    left: int
    top: int
    right: int
    bottom : int
    confidence : float = Field(..., ge=0, le=1)
    label: str
    keyPoints : List[KeyPoint] = Field(default=None)

    @field_validator("left", "top", "right", "bottom", mode='before')
    def ensure_non_negative(cls, v):
        return max(v, 0)
    
    @model_validator(mode='after')
    def ensure_correct_box(self):
        if self.left >= self.right:
            raise ValueError(f"'left' ({self.left}) must be less than 'right' ({self.right}).")
        if self.top >= self.bottom:
            raise ValueError(f"'top' ({self.top}) must be less than 'bottom' ({self.bottom}).")
        return self
    
    @property
    def width(self):
        return self.right - self.left

    @property
    def height(self):
        return self.bottom - self.top

    @property
    def area(self):
        return self.width * self.height

if __name__ == "__main__":
    box = Box(left=100, top=0, right=200, bottom=200, confidence=1.0, label="person")
    print(box)

API 返回

from pydantic import BaseModel
from typing import List, Optional, Generic, TypeVar

T = TypeVar("T")

class APIResponse(BaseModel, Generic[T]):
    success: bool
    data: Optional[List[T]]
    msg: Optional[List[str]]

# 示例用法
if __name__ == "__main__":
    response = APIResponse[dict](success=True, data=[{"key": "value"}], msg=None)
    print(response.model_dump_json())

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容