将配置解析器字典映射到具有正确值类型的类构造函数



我有一个config ini文件,如下所示:

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

我有一个名为User的 Python 类__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 文件并将配置解析器字典传递给User构造函数时,字典中的值是字符串。

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

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

但是,这需要我将每个参数传递给User构造函数。每当我需要为User构造函数添加/删除参数时,这可能会很麻烦

是否可以在构造函数中使用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'>

最新更新