BaseSettings 是否支持添加任意输入参数而无需重写构造函数?

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

在我的 Config 类中:

class MyConfig(BaseSettings):
    err_if_not_found: bool = False
    model_config = SettingsConfigDict(
        env_file=MyConfigs(err_if_not_found).configs,
        env_prefix="MY_APP",
    )

我有自己的类用于加载配置,如果设置了

err_if_not_found
,它支持选择性地抛出错误。

我真的不想重写 BaseSettings 构造函数,我想不管它,而不用担心在不破坏 pydantic 功能的情况下正确复制它。

有没有一个功能可以做这样的事情,我传入一个值,然后传递给一个函数或在

SettingsConfigDict
内部调用的东西:

MyConfig(err_if_not_found=True)
python pydantic
1个回答
0
投票

据我所知,Pydantic 不可能做到这一点。

我相信您能得到的最接近您所描述的内容是有两个类,一个类将

True
作为
SettingsConfigDict
中的标志值传递,另一个传递
False
中的标志值。比如:

class MyConfigBase(BaseSettings):
  ...

class MyConfigWithErrorIfNotFound(MyConfigBase):
    model_config = SettingsConfigDict(
        env_file=MyConfigs(err_if_not_found=True).configs,
        env_prefix="MY_APP",
    )

class MyConfigWithoutErrorIfNotFound(MyConfigBase):
    model_config = SettingsConfigDict(
        env_file=MyConfigs(err_if_not_found=True).configs,
        env_prefix="MY_APP",
    )
© www.soinside.com 2019 - 2024. All rights reserved.