首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NewType上的Pydantic检查

NewType上的Pydantic检查
EN

Stack Overflow用户
提问于 2022-05-17 05:40:40
回答 1查看 228关注 0票数 0

我已经为一个项目创建了一个带有约束的新类型。(我知道,这种类型本身一点也不好,但现在,这正是我们所使用的)

代码语言:javascript
复制
from typing import NewType
from pydantic import conlist, PositiveFloat    
PositionType = NewType('PositionType', conlist(PositiveFloat, min_items=2, max_items=2))

如果创建一个新的错误的类型实例,则不会出现错误。

代码语言:javascript
复制
test = PositionType([2,-4])

但是,如果我创建一个使用这种类型的BaseModel实例,就会得到预期的错误。

代码语言:javascript
复制
from pydantic import BaseModel
from typing import List
class TestClass(BaseModel):
    list_of_positions : List[PositionType]

test = TestClass(list_of_positions=[test])

我希望能够在使用PositionType的新实例时检查新对象是否被正确创建。有什么办法吗?我找不到一个装潢师/选项来运行pydantic (我在Python3.10上)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-19 17:33:51

在研究了一段时间之后,我得到了这样的解决方案: Pydantic允许为类定义自定义根类型:

代码语言:javascript
复制
from typing import NewType
from pydantic import conlist, PositiveFloat    
from pydantic import BaseModel
PositionType = NewType('PositionType', conlist(PositiveFloat, min_items=2, max_items=2))


class PositionClass(BaseModel):
    __root__: PositionType
    
test = PositionClass.parse_obj([2, -4])

当将__root__设置为我的新类型时,我会得到一个与我的NewType基本相同的类。只有在调用PositionClass()时,我才需要将__root__作为参数传递,或者使用每个pydantic类都具有的parse_obj函数。

现在,我得到了我想要的错误消息(尽管我不完全满意必须将__root__传递给构造函数)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72268685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档