将对象序列化为Python代码,而不是使用pi

2024-10-02 04:19:07 发布

您现在位置:Python中文网/ 问答频道 /正文

在python(3.6)中,我使用SimpleNameSpace(可以很容易地转换为类)来存储不同模型运行的参数。大多数是动态创建的,但有些是手动创建或修改的。我需要跟踪使用的参数。我知道用pickle可以很容易地做到这一点,但是这使得手动编辑或创建新的参数文件变得不可能(或者至少很麻烦)

我想将每个SimpleNameSpace保存为一个单独的.py文件,以后可以导入

我可以为SimpleNameSpace定义创建一个字符串并将其写入.py文件,但这看起来非常复杂且容易出错

伪代码如下:

paramRun1 = SimpleNameSpace(
  param1 = ...
  param2 = ...
...
)

我想把上面的代码写到paramRun1.py

然后可以在其他代码中使用它

from paramRun1 import paramRun1
p1 = paramRun1.param1
...

谢谢你的帮助

标记


Tags: 文件字符串代码py模型编辑参数定义
1条回答
网友
1楼 · 发布于 2024-10-02 04:19:07

也许你可以试试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 may be useful as a replacement for class NS: pass. However, for a structured record type use namedtuple() instead.

那么在您的情况下,您必须使用SimpleNamespace吗

相关问题 更多 >

    热门问题