35 lines
906 B
Python
35 lines
906 B
Python
|
|
# 正确示例:显式类型注解
|
|||
|
|
import os
|
|||
|
|
|
|||
|
|
from pydantic import BaseModel
|
|||
|
|
|
|||
|
|
class User(BaseModel):
|
|||
|
|
id: int # 显式指定int类型
|
|||
|
|
name: str # 显式指定str类型
|
|||
|
|
is_active: bool = True # 带默认值的类型注解
|
|||
|
|
|
|||
|
|
# 错误示例:缺少类型注解
|
|||
|
|
# class BadUser(BaseModel):
|
|||
|
|
# id = 1 # 缺少类型注解,Pydantic 2.9+将报错
|
|||
|
|
# name = "John" # 缺少类型注解,Pydantic 2.9+将报错
|
|||
|
|
|
|||
|
|
os.environ['app_port'] = '8888'
|
|||
|
|
|
|||
|
|
# 环境变量自动映射示例
|
|||
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|||
|
|
|
|||
|
|
|
|||
|
|
class AppConfig(BaseSettings):
|
|||
|
|
host: str = "localhost"
|
|||
|
|
port: int = 8000
|
|||
|
|
|
|||
|
|
model_config = SettingsConfigDict(
|
|||
|
|
env_prefix="APP_", # 环境变量前缀
|
|||
|
|
case_sensitive=False # 不区分大小写
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
|
|||
|
|
# 当环境变量存在APP_PORT=8080时
|
|||
|
|
config = AppConfig()
|
|||
|
|
print(config.port) # 输出: 8080 (而非默认的8000)
|