【发布时间】:2021-06-05 05:15:41
【问题描述】:
使用 python attrs 库并尝试在 Settings 对象中设置目录路径。当从 shell 本身设置环境变量时,这很有效。但是,如果没有从 shell 设置 TEST_TMPDIR 并且我尝试在 python 代码本身中设置该值,则默认值初始化为 None。
@attr.s(frozen=True)
class Settings(object):
test_tmpdir = attr.ib(default=os.environ.get("TEST_TMPDIR"))
以下代码示例,默认为无。
os.environ["TEST_TMPDIR"] = '/tmp/'
setting = Settings()
只有在 shell 级别设置环境变量时,代码当前才有效。因此,在终端中执行 export TEST_TMPDIR="/tmp/" 然后读取 Settings() 即可。
尝试在__attrs_post_init__ 中读取 os.environ["TEST_TMPDIR"] 它确实返回了 python 代码设置的值。
关于为什么在启动时未设置默认值的任何链接都会有所帮助。
【问题讨论】:
标签: python attr python-attrs