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())
