我对python非常陌生:我想用python序列化和反序列化我的自定义对象。请指导我做同样的事。我有一个示例类:
import pickle
import json
class MyClass():
variable = "blah"
num = 10
def function(self):
print("this is a message inside the class.")
def get_variable():
return variable
def get_num():
return num
def main():
myObj = MyClass()
with open('/opt/infi/deeMyObj.txt', 'w') as output:
pickle.dump(myObj, output,pickle.HIGHEST_PROTOCOL)
with open('/opt/infi/deeMyObj.txt', 'r') as input:
myObjread = pickle.load(input)
print myObjread.get_variable()
print myObjread.get_num()
main()
我收到以下错误:
回溯(最近一次呼叫):
“文件”样品.py“,第30行,英寸
^{pr2}$“文件”样品.py“,第27行,主要内容
print myObjread.get_variable()
TypeError:get_variable()不接受参数(给定1)
主要目的是读回对象。在
要在jasonharper's comment上展开,}方法没有引用类的成员变量。他们应该把对象作为他们的第一个论据
get_variable
和{我认为你的序列化代码没问题,但我可能错了。在
(旁白) 这有点离题,但需要注意的另一件事是:当您直接在
^{pr2}$class
块中定义变量时,它们是在类上定义的,而不是在该类的对象上定义的。在这种情况下,这种情况正好可以解决,因为Python在对象上找不到同名的类级变量。但是,如果您在其中一个对象中存储一个列表并开始对其进行修改,那么您最终将在对象之间共享它,这可能不是您想要的。相反,您希望在__init__
方法中定义它们:相关问题 更多 >
编程相关推荐