假设我有一个(简化的)类,如下所示。我将它用于程序配置(超参数)。
# config.py
class Config(object): # default configuration
GPU_COUNT = 1
IMAGES_PER_GPU = 2
MAP = {1:2, 2:3}
def display(self):
pass
# experiment1.py
from config import Config as Default
class Config(Default): # some over-written configuration
GPU_COUNT = 2
NAME='2'
# run.py
from experiment1 import Config
cfg = Config()
...
cfg.NAME = 'ABC' # possible runtime over-writing
# Now I would like to save `cfg` at this moment
我想保存此配置并稍后恢复。恢复时必须不关心成员函数。
1.当我尝试泡菜时:
import pickle
with open('cfg.pk', 'rb') as f: cfg = pickle.load(f)
##--> AttributeError: Can't get attribute 'Config' on <module '__main__'>
我看到了一个使用class_defof的解决方案Config,但我希望我可以在不知道类定义的情况下恢复配置(例如,导出到 dict 并另存为 JSON)
2.我尝试将class转换为dict(这样我就可以导出为JSON)
cfg.__dict__ # {'NAME': 'ABC'}
vars(cfg) # {'NAME': 'ABC'}
在这两种情况下,都很难访问属性。可能吗?