pydantic v2.0.0 带有 pylint 无成员警告

问题描述 投票:0回答:1

问题

  • pydantic doc中,pydantic ^2.0.0不支持这样的
    a:Optional[str]
    ,而是支持
    a:Optional[str] = Field(default=None)
  • 但是,pylint 检查我的代码时会发出警告
    [E1101(no-member), get] Instance of 'FieldInfo' has no 'split' member
from 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(" ")

尝试

  • 如果我使用
    a:Optional[str] = None
    可以解决上面所有问题,但是我的项目有些字段使用Field
  • 声明 pylint 禁用 pyfile 中的检查:
    pylint: disable=no-member
  • 声明 pylint 禁用 .pylinrc 中的检查

如何解决以上问题

python python-3.x types pylint pydantic
1个回答
0
投票

您还可以使用

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(" ")

它失败的原因是由于 pylint 如何像这样分析静态属性,使用

Field
的结果作为值而不是我们提供的类型提示。

© www.soinside.com 2019 - 2024. All rights reserved.