选项设置位置

可以使用 get_location() 方法来确定选项的值是由用户还是应用程序代码设置的。返回值是一个 LocationInfo 实例,其中包含 2 个字段:locationdetail

location 值是 Locations 枚举的成员,该枚举有 5 个可能的值。detail 值是一个描述位置的字符串。它的值取决于 location

is_user_controlled

描述

详情

opt_default

False

选项定义时设置的原始默认值。

定义选项的源文件名。

set_default

False

应用程序设置的默认值,用于覆盖原始默认值。这通常仅适用于在库中定义的选项。

调用 set_default()set_defaults() 的源文件名。

set_override

False

应用程序设置的强制值。

调用 set_override() 的源文件名。

user

True

用户通过配置文件等配置后端设置的值。

设置选项的配置文件。

command_line

True

用户在命令行中设置的值。

空字符串。

environment

True

用户在进程环境中设置的值。

环境变量的名称。

用户是否设置了配置选项?

每个 Locations 枚举值都有一个布尔属性,指示该类型的配置位置是否由用户管理。这消除了应用程序代码单独跟踪哪些类型的配置位置由用户控制的需要。

loc = CONF.get_location('normal_opt').location
if loc.is_user_controlled:
   print('normal_opt was set by the user')
else:
   print('normal_opt was set by the application')