我要做的是使用python序列化一些类对象。但是,当我尝试迭代类对象的list属性时,我得到一个str错误。我不清楚怎么解决这个问题。我对Python还比较陌生。你知道吗
AttributeError: 'str' object has no attribute 'serialize'
此错误发生在此函数内的Family类对象中。。。你知道吗
for member in self.members:
print member
data["members"].append( member.serialize() ) # ERROR
代码
import json
# Functions
# ------------------------------------------------------------------------------
def GetProperties(properties):
if properties == "Basic Properties":
return {
"Basic Properties" : [
Property("isMale", False),
Property("isRelated", True),
]
}
elif properties == "Extra Properties":
return {
"Extra Properties" : [
Property("isTall", False),
Property("isAthletic", True),
]
}
# Classes
# ------------------------------------------------------------------------------
class Property:
def __init__(self, key, value):
self.key = key
self.value = value
class Person:
def __init__(self, name, attributes={}):
self.name = name
self.attributes = {}
def serialize(self):
data = {
"classname" : self.__class__.__name__,
"name" : self.name,
"attributes" : {},
}
return data
class Family:
def __init__(self, name, members=[], attributes={}):
self.name = name
self.members = members[:]
self.attributes = {}
def serialize(self):
data = {
"classname" : self.__class__.__name__,
"name" : self.name,
"attributes" : {},
"members" : [],
}
for member in self.members:
print member
data["members"].append( member.serialize() )
return data
# testing Serialization
newPerson = Person( "Joey" )
newPerson.attributes.update( GetProperties( "Basic Properties" ) )
newFamily = Family( "Johnson's" )
newFamily.attributes.update( GetProperties( "Basic Properties" ) )
newFamily.members.append( "newPerson" )
data = newFamily.serialize()
json.dump(data, open("test.json",'w'), indent=4)
尝试:
在原始代码中,您有:
因此,传递字符串时,您试图序列化字符串,而不是
Person
对象。你知道吗相关问题 更多 >
编程相关推荐