黄振宇*_*黄振宇 5 python types pylint python-3.x pydantic
a:Optional[str],而是支持a:Optional[str] = Field(default=None)[E1101(no-member), get] Instance of 'FieldInfo' has no 'split' memberfrom pydantic import BaseModel, Field
from typing import Optional
class A(BaseModel):
a: Optional[str] = Field(default=None)
def get(**kwargs):
return A(**kwargs).a.split(" ")
Run Code Online (Sandbox Code Playgroud)
a:Optional[str] = None可以解决上述所有问题,但是我的项目某些字段使用 Fieldpylint: disable=no-member我该如何解决上述问题
您还可以Annotated使用 pydantic 来装饰您的字段Field。像这样的东西应该适合你:
from pydantic import BaseModel, Field
from typing import Annotated, Optional
class A(BaseModel):
a: Annotated[Optional[str], Field(default=None)]
def get(**kwargs):
return A(**kwargs).a.split(" ")
Run Code Online (Sandbox Code Playgroud)
它失败的原因是 pylint 如何分析像这样的静态属性,使用 的Field结果作为值而不是我们提供的类型提示。
Field这也适用于其他属性:
from enum import Enum
from typing import Annotated, Any, Optional
from pydantic import BaseModel, Field
class Kind(Enum):
ABC = "abc"
class MyClass(BaseModel):
kind: Annotated[Optional[Kind], Field(default=None, alias="Kind")]
args: dict[str, Any] = {"Kind": "abc"}
obj = MyClass(**args)
print(obj.kind) # Kind.ABC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |