You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Pydantic模型类方法返回类属性时的AttributeError?

解决Pydantic BaseModel类方法访问字段默认值的AttributeError问题

问题原因

Pydantic的BaseModel中定义的字段(比如llm_model: str = 'gpt-4')不是类级属性,而是存储在模型的元数据配置里,并非直接挂载在类本身。所以直接通过cls.llm_model访问会触发AttributeError,只有实例化模型后,字段才会成为实例的属性。

解决方案

方案1:通过模型字段配置获取默认值(推荐)

Pydantic v2版本可使用cls.model_fields访问字段元数据,从中提取默认值:

from pydantic import BaseModel

class ExtractionModel(BaseModel):
    llm_model: str = 'gpt-4'

    @classmethod
    def create_llm(cls):
        return cls.model_fields['llm_model'].default

print(ExtractionModel.create_llm())  # 输出: gpt-4

如果是Pydantic v1版本,替换为cls.__fields__即可:

return cls.__fields__['llm_model'].default

方案2:在类方法中创建实例访问属性

若逻辑允许,也可在类方法内创建模型实例,再访问实例属性:

from pydantic import BaseModel

class ExtractionModel(BaseModel):
    llm_model: str = 'gpt-4'

    @classmethod
    def create_llm(cls):
        instance = cls()
        return instance.llm_model

print(ExtractionModel.create_llm())  # 输出: gpt-4

这种方法适合需要验证字段默认值有效性的场景,但相比方案1多了实例化的开销。

内容的提问来源于stack exchange,提问作者Eric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 09:02:18