在python(3.6)中,我正在使用SimpleNameSpace(可以轻松地转换为类)来存储不同模型运行的参数。大多数是动态创建的,但有些是手动创建或修改的。我需要跟踪使用的参数。我知道可以使用pickle轻松完成此操作-但这使手动编辑或创建新参数文件成为不可能(或至少很麻烦)。
我想将每个SimpleNameSpace保存为一个单独的.py文件,以后可以将其导入。
我可以为SimpleNameSpace定义创建一个字符串,然后将其写到.py文件中,但这看起来非常复杂并且容易出错。
伪代码如下:
paramRun1 = SimpleNameSpace(
param1 = ...
param2 = ...
...
)
我想将上面的代码写到paramRun1.py
然后可以在其他代码中使用它
from paramRun1 import paramRun1
p1 = paramRun1.param1
...
谢谢您的帮助,
标记
最佳答案
也许您可以尝试namedtuple
。
# paramRun1.py
from collections import namedtuple
paramRun1 = namedtuple("paramRun1", ["param1", "param2"])
pr1 = paramRun1(1, 2)
# a more practical example
Student = namedtuple("Student", ["name", "age"])
Tom = Student("Tom", 18)
并像这样使用它:
>>> import paramRun1
>>> p1 = paramRun1.pr1.param1
>>> p1
1
>>> print(f"my name is {paramRun1.Tom.name}, I'm {paramRun1.Tom.age} old")
my name is Tom, I'm 18 old
我检索了正式文件,其内容如下:
SimpleNamespace可能有用以代替
class NS: pass
。但是,对于结构化记录类型,请改用namedtuple()。那么就您而言,您是否必须使用SimpleNamespace?