【问题标题】:pydantic module check the variables only in initpydantic 模块仅在 init 中检查变量
【发布时间】:2019-05-22 06:54:48
【问题描述】:

pydantic 模块只检查 init 中的变量

pip 安装 pydantic

例子

from pydantic.dataclasses import dataclass
@dataclass
class Glass:
    capacity_volume : float
    occupied_volume : float

glass = Glass(300, 100)       # OK int to float
print(glass) # Glass(capacity_volume=500.0, occupied_volume=0.0)

glass = Glass(300.0, 100.0)   # OK 
print(glass) # Glass(capacity_volume=500.0, occupied_volume=0.0)

glass = Glass('300', '100')   # OK str to float    
print(glass) # Glass(capacity_volume=500.0, occupied_volume=0.0)

glass.capacity_volume = '300' 
print(glass) # Glass(capacity_volume='300', occupied_volume=0.0)

如果设置了变量的类型,是否可以检查?

【问题讨论】:

    标签: python pydantic


    【解决方案1】:

    是的,如果我理解正确的话,完全有可能:

    from pydantic.dataclasses import dataclass
    
    class Config:
        validate_assignment = True
    
    @dataclass(config=Config)
    class Glass:
        capacity_volume: float
        occupied_volume: float
    
    glass = Glass('300', '100')
    print(glass)  
    #> Glass(capacity_volume=300.0, occupied_volume=100.0)
    
    glass.capacity_volume = '400'
    print(glass)  
    #> Glass(capacity_volume=400.0, occupied_volume=100.0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 2015-01-13
      相关资源
      最近更新 更多