Skip to content
鼓励作者:欢迎打赏犒劳

python的对象增强

特性TypedDictPydantic (BaseModel)
核心作用静态类型提示(写代码时防错)运行时数据校验与转换(跑代码时防错)
生效时间仅在代码编写/静态检查阶段生效在程序实际运行时生效
数据校验❌ 无(运行时传错数据也不会报错)✅ 强校验(数据不对会直接抛出异常)
数据转换❌ 无✅ 自动转换(如把字符串 "18" 转为数字 18
底层本质依然是普通的 Python 字典(dict)继承自 BaseModel 的专用对象

TypedDict

python
from typing import TypedDict

class UserDict(TypedDict):
    id: int
    name: str

# 在写代码时,IDE 会提示你字典里该有哪些键
user_data: UserDict = {"id": 1, "name": "Alice"} 

# ⚠️ 注意:即使你传了错误的数据,程序在运行时也不会报错!
bad_user: UserDict = {"id": "错误地传了字符串", "name": "Bob"} 
print(bad_user) # 正常运行,打印出字典

Pydantic

py
from pydantic import BaseModel

class UserModel(BaseModel):
    id: int
    name: str

# ✅ 正常数据,顺利通过
user = UserModel(id=1, name="Alice")
print(user) # 输出: id=1 name='Alice'

# 🔄 自动转换:Pydantic 会把字符串 "2" 自动转成整数 2
converted_user = UserModel(id="2", name="Bob") 
print(converted_user.id, type(converted_user.id)) # 输出: 2 <class 'int'>

# 🛑 严格拦截:如果数据实在无法转换,直接报错,阻止程序带病运行
try:
    bad_user = UserModel(id="这不是数字", name="Charlie")
except Exception as e:
    print("数据校验失败:", e)

如有转载或 CV 的请标注本站原文地址