Ala*_*lan 22 python-3.x pydantic
在普通的 python 类中,我可以定义类属性,例如
class Example:
x = 3
def __init__(self):
pass
Run Code Online (Sandbox Code Playgroud)
如果我接着做Example.xor Example().x,我就得到了3。
当我继承 pydantic's 时BaseModel,我不知道如何定义类属性,因为定义它们的通常方法被 BaseModel 覆盖。
例如:
class Example(BaseModel):
x = 3
print(Example.x)
--> type object 'Example' has no attribute 'x'
Run Code Online (Sandbox Code Playgroud)
我希望能够定义类级别属性。正确的方法/语法是什么?
Ala*_*lan 42
好吧,我终于弄清楚了。答案在于数据类如何处理类变量。(回想起来,这应该是显而易见的,但你生活并学习)
存在一种称为 的类型ClassVar。当类的属性用 键入时ClassVar,它就成为类变量。
class Example(BaseModel):
x: ClassVar[int] = 3
y: int
# Usage
print(Example().x)
>>> ValidationError
print(Example.x)
>>> 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15939 次 |
| 最近记录: |