I’d like to create a config
dataclass
in order to simplify whitelisting of and access to specific environment variables (typing os.environ['VAR_NAME']
is tedious relative to config.VAR_NAME
)。因此,我需要忽略我的 dataclass
的 __init__
函数中未使用的环境变量,但我不知道如何提取默认值 __init__
例如,它带有一个函数,该函数还包括 *_
作为参数之一。
import os
from dataclasses import dataclass
@dataclass
class Config:
VAR_NAME_1: str
VAR_NAME_2: str
config = Config(**os.environ)
运行这个给我 TypeError: __init__() got an unexpected keyword argument 'SOME_DEFAULT_ENV_VAR'
。
原文由 Californian 发布,翻译遵循 CC BY-SA 4.0 许可协议
我只想提供一个明确的
__init__
而不是使用自动生成的。循环体只设置识别值,忽略非预期值。请注意,直到稍后,这才会抱怨没有默认值的缺失值。
或者,您可以将过滤环境传递给默认值
Config.__init__
。