0
我想要做的是使用python序列化一些類對象。但是,當我嘗試迭代類對象的列表屬性時,我得到一個str錯誤。我不清楚如何解決這個問題。我對Python非常陌生。遍歷類對象的屬性列表拋出python str錯誤
AttributeError: 'str' object has no attribute 'serialize'
這個函數裏面的家庭類對象中出現的錯誤...
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)
'newFamily.members.append(newPerson)'?你有一個字符串文字「newPerson」。 –
幫助你是正確的。我愚蠢的錯誤 – JokerMartini