使用 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() 工作。
尝试在其中读取 os.environ["TEST_TMPDIR"]__attrs_post_init__
确实返回了 python 代码设置的值。
任何有关为什么在启动时未设置默认值的链接都会有所帮助。