python - 使用pickle文件设置类属性?
问题描述
我想通过pickle为自定义类实现加载和保存方法。(在这个例子中,我们可以不使用参数来实例化类,然后使用'load'分别填充a和b)
class A:
def __init__(self, a = None, b = None):
self.a = a
self.b = b
def save(self, fname):
# this works well
with open(fname, 'wb') as f:
pickle.dump(self, f)
def load(self, fname):
# This does not work
with open(fname, 'rb') as f:
self = pickle.load(f)
上面的代码不起作用,谁能给我一些建议?我正在使用 Python 3.6
解决方案
您load()
应该返回一个新对象,例如:
def load(self, fname):
with open(fname, 'rb') as f:
return pickle.load(f)
和电话,是这样的:
x = x.load(fn)
x
对象名称在哪里。
或者(见评论)你可以只拾取属性:
def load(self, fname):
with open(fname, 'rb') as f:
tmp = pickle.load(f)
self.a = tmp.a
self.b = tmp.b
但是,您最好将属性保存到泡菜而不是对象。
推荐阅读
- heroku - 运行 Heroku Rake 任务时找不到 Mozilla geckodriver 错误
- ruby - 运行 bundle 或 rspec 将行添加到 Gemfile.lock
- java - 第一个对象未添加到 arraylist
- java - 如何在 API 26 中添加音乐播放器通知
- c# - 如何从头开始为硒测试创建自定义 HTML 报告
- azure-active-directory - 使用 AAD 为用户创建角色
- git - 命令行中的“Git add”未反映在 Visual Studio 2013 中
- python - Airflow + Cluster + Celery + SQS - Airflow Worker:“Hub”对象没有属性“_current_http_client”
- python - 当您输入变量名并希望它是一个整数以供以后计算时,如何使用输入函数?
- firebase - Firebase 用户已删除,但仍在设备上登录