Python类中的__config__()方法是什么?SQLModel继承缺该方法报错原因?
问题解答
核心结论
__config__不是Python官方定义的内置魔术方法,是Pydantic/SQLModel生态自定义的特殊配置项,不存在Python通用规范层面的作用定义。
报错原因
SQLModel的类创建逻辑依赖元类实现,当你声明HouseBase同时继承SQLModel和SQLMixins时,元类会遍历所有父类,读取每个父类的__config__属性合并为当前模型的最终配置(包含ORM开关、字段序列化规则、表名生成规则等)。由于你的SQLMixins是普通Python类,没有内置__config__属性,元类读取属性失败就抛出了AttributeError。
空方法可运行的原因
你给SQLMixins添加空__config__方法后,元类读取属性时可以正常获取到该属性,不会抛出属性不存在的错误;同时空方法不会产生有效配置,不会覆盖SQLModel的默认配置逻辑,因此代码可以正常运行。
更规范的实现方案
推荐两种比添加空实例方法更合理的实现方式,避免无意义的方法定义:
- 方案1:让混合类直接继承SQLModel,自动获得内置的
__config__属性
class SQLMixins(SQLModel): def save(self, session): session.add(self) session.commit() session.refresh(self)
- 方案2:给混合类添加空类属性
__config__,满足元类的读取要求
class SQLMixins: __config__ = {} def save(self, session): session.add(self) session.commit() session.refresh(self)
内容的提问来源于stack exchange,提问作者John Kealy
相关产品推荐
相关产品推荐

