将 ConfigParser 字典映射到具有正确值类型的 class 构造函数

Map ConfigParser dictionary to a class constructor with correct value types

我有一个如下所示的配置 ini 文件:

[user]
name=john
sex=male
age=19
income=2345.99

我有一个名为 User 的 Python class,下面是 __init__ 构造函数:

class User:
    def __init__(self, name: str, sex: str, age: int, income: float):
        self.__name = name
        self.__sex = sex
        self.__age = age
        self.__income = income

当我使用 ConfigParser 读取 ini 文件并将 configparser 字典传递给 User 构造函数时,字典中的值为字符串。

config = ConfigParser()
config.read('test.ini')
user = User(**config["user"])

ConfigParsergetfloatgetintgetboolean 等方法。我可以使用这些方法并为每个参数获取正确的数据类型。

但是,这需要我将每个参数传递给 User 构造函数。每当我需要 User 构造函数

的 add/remove 参数时都会很麻烦

是否可以在构造函数中使用 user = User(**config["user"]) 并配置 ConfigParser 以将值转换为正确的数据类型?

如果你使用 pydantic:

这样的东西,这就变得微不足道了
import pydantic
import configparser


class User(pydantic.BaseModel):
    name: str
    sex: str
    age: int
    income: float


config = configparser.ConfigParser()
with open("config.ini") as fd:
    config.read_file(fd)

user = User(**config["user"])

此时,配置文件中的字符串值已转换为适当的数据类型:

>>> type(user.income)
<class 'float'>