| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- from pydantic import BaseModel
- # class Bidder(BaseModel):
- # name: str # 字符串
- # age: int # 整数
- #
- # # 用关键字参数创建实例
- # s = Bidder(name="小明", age=18)
- # # s = Bidder(name="小明", age="十八")
- # print(s.name) # 小明
- # print(s.age) # 18
- # print(type(s.age)) # 18
- # print(s) # name='小明' age=18
- # from pydantic import BaseModel, Field
- #
- # class UserProfile(BaseModel):
- # name: str = Field(description="用户姓名") # 必填:没有默认值
- # phone: str = Field(default="", description="手机号") # 可选:有默认值 ""
- # age: int = Field(default=18, description="年龄") # 可选:默认 18
- # # tags: list[str] = Field(default_factory=list, description="标签列表") # 正确写法:只能列表中存字符串
- # tags: list[str | int] = Field(default_factory=list, description="标签列表") # 正确写法:列表中既可以是字符串也可以是整数
- # title: str = "这是一个投标人的介绍" # 简化默认值的写法
- #
- #
- # up = UserProfile(name="张三", phone="123456", tags=["a", 2, "c"])
- # print(up)
- # print(up.name)
- # print(up.age)
- # print(up.phone)
- # print(up.tags)
- # print(up.title)
- # print(up.g1)
- #
- # from pydantic import BaseModel, Field
- # from typing import Optional
- # class EducationItem(BaseModel):
- # school: str = Field(description="供应商名称")
- # major: str = Field(description="专业名称")
- #
- # class Qualification(BaseModel):
- # name: str = Field(description="姓名")
- # education: list[EducationItem] = Field(default_factory=list) # 资质信息列表
- # nickname: Optional[str] = None # 可以是字符串,也可以是 None
- #
- # # 创建时,嵌套部分可以直接用字典,Pydantic 会自动转成对应的子模型
- # # qualification = Qualification(
- # # name="小明",
- # # education=[
- # # {"school": "清华大学", "major": "计算机"},
- # # {"school": "北京大学", "major": "软件工程"},
- # # ],
- # # )
- #
- # qualification = Qualification(
- # name="小明",
- # education=[EducationItem(school="清华大学", major="计算机"),
- # EducationItem(school="清华大学", major="计算机")],
- # )
- #
- #
- # print(f'qualification: {qualification}')
- # print("*"*80)
- # print(qualification.name) # 小明
- # print(qualification.education[0].school) # 清华大学 ← 注意:已经是 EducationItem 对象了
- # print(type(qualification.education[0])) # <class '__main__.EducationItem'>
- # print(qualification.nickname) # <class '__main__.EducationItem'>
- from pydantic import BaseModel, Field
- # class Bidder(BaseModel):
- # name: str = Field(description="姓名")
- # age: int = Field(default=18, description="年龄")
- #
- # s = Bidder(name="小明", age=20)
- #
- # d = s.model_dump() # 模型 → 字典
- # # d = s.dict()
- # print(d) # {'name': '小明', 'age': 20}
- # print(type(d)) # <class 'dict'>
- #
- # data = {"name": "小红", "age": 22}
- # s2 = Bidder(**data) # 字典 → 模型
- # print(s2.name) # 小红
- from enum import Enum
- class DefenseStage(str, Enum): # 继承 str,取值就是字符串
- WARMUP = "warmup"
- TECH_BASE = "tech_base"
- PROJECT = "project"
- CLOSING = "closing"
- FINISHED = "finished"
- print(DefenseStage.WARMUP) # DefenseStage.WARMUP
- print(DefenseStage.WARMUP.value) # warmup
- if DefenseStage.WARMUP == "warmup":
- print("这是预热阶段")
- if DefenseStage.PROJECT == "project":
- print("项目阶段")
|