将非验证方法包含在pydantic模型中是否是不好的实践?

61

我正在使用pydantic 1.3来验证我正在编写的API的模型。

在从pydantic.BaseModel继承的类中包含任意方法是常见/良好的做法吗?

我需要一些与对象相关联的辅助方法,并且我正在尝试决定是否需要一个"handler"类。这些模型将被转换为JSON并发送到我正在编写的RESTful服务。

我的模型如下:

class Foo(pydantic.BaseModel):
    name: str
    bar: int
    baz: int

像这样做是不好的实践吗:

class Foo(pydantic.BaseModel):
    name: str
    bar: int
    baz: int

    def add_one(self):
        self.bar += 1

我有点明白这个意思,但我找不到任何人这样做的例子。


2
我认为你在方法声明中忘记了 def 关键字。我以为这可能是一些 pydantic 的魔法,但它无法编译。 - JimmyJames
2
这是一个很好的问题。我有许多用例需要添加一些轻量级功能,例如从其他数据结构构造对象的方法以及验证它。在一个类中完成这些操作非常合理。 - John Curry
1个回答

58

没问题,我们可能需要记录下来。

唯一的问题在于当你拥有与方法冲突的字段名时,但如果你知道自己的数据长什么样子,那就不是一个问题。此外,过度使用面向对象编程也是可能的,但你距离那还有很长一段路。


7
谢谢。我真的很感激pydantic出色的文档。继续保持好工作。 - ccred

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,