有没有办法阻止 pydantic 调用我用于在导入时查找配置文件的函数?

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

我的班级看起来像这样:

class MyConfig(BaseSettings):
    model_config = SettingsConfigDict(
        env_file=get_configs(),
    )

我没有意识到我的

get_configs()
似乎在导入时被调用。当我在该函数中遇到错误并且 pytest 集合失败时,我发现了这一点。

这是 python 行为还是特定于

model_config
类的
BaseSettings
属性如何工作?这对我来说没有意义,因为我希望只有在执行实际实例化
get_configs()
的代码时才会调用我的
MyConfig
函数。

python pydantic pydantic-settings
1个回答
0
投票

对于任何类来说,这是正常的 Python 行为。 Python 执行类定义的主体与执行模块级代码相同 - 考虑到它位于类内的事实。例如,在模块级别,函数定义(例如

def foo(): return 1
)将已编译的函数绑定到模块命名空间中的名称“foo”。在类定义中,方法(例如,
def foo(self): return 1
)中,函数对象绑定到类命名空间中的“foo”。

在您的情况下,类级别“model_config”被分配函数调用的结果。

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