使用Python,我想寫的對象,它的訪問將是這樣的:結構,像蟒蛇
page[2].records[7].color = "ffff"
(「錄音」有一些領域)。
該對象應該被導出爲json字符串,當然也可以從json導入(目前是unwrittten),所以我添加了toString()方法。
關鍵是代碼非常「笨拙」。有沒有辦法(使用python)來製作更多「高明」的代碼?
我的代碼:
class Record():
'''
'''
def __init__(self, title, color, action, data) :
self.title = title
self.color = color
self.action = action
self.data = data
def toDict(self) :
ans = {'title':self.title, 'color':self.color, 'action':self.action, 'data':self.data}
return ans
def toString(self):
return '%s' % self.toDict()
#-----------------------------------------------------------------------
class Records():
'''
'''
def __init__(self):
self.f_record = {}
def __getitem__(self, key):
if not(self.f_record.get(key,None)):
self.f_record[key] = Record(None,None,None,None)
return self.f_record[key]
def __setitem__(self, key, value):
self.f_record[key] = value
def toDict(self):
ans = {}
for i in self.f_record:
ans[i] = self.f_record[i].toString()
return ans
def toString(self):
return '%s' % self.toDict()
#-----------------------------------------------------------------------
class Page():
'''
'''
def __init__(self):
self.records = Records()
def toString(self):
return self.records.toString()
#-----------------------------------------------------------------------
class Papers():
'''
'''
def __init__(self):
self.f_papers = {}
def __getitem__(self,key):
if not (self.f_papers.get(key,None)):
self.f_papers[key] = Page()
return self.f_papers[key]
def toString(self):
ans = {}
for i in self.f_papers:
ans[i] = self.f_papers[i].toString()
return '%s' % ans
#-----------------------------------------------------------------------
#tests
a = Papers()
a[1].records[1] = Record('group','red','open', 'group1')
a[1].records[2] = Record('group','green','open', 'group2')
a[2].records[7].title = "ffff"
a[1].records[1].title = 'title :-) '
print a[1].records[1].toString()
print a.toString()
您能更具體地瞭解您對代碼不滿意的內容以及您希望代碼的內容嗎? – BrenBarn
您的對象除了存儲數據外什麼也不做。你首先需要這些課程嗎?除了'toString'和'toDict'之外,還有其他方法嗎? – Blender
值得指出的一件事是,如果你想序列化爲JSON,你應該使用'json'模塊而不是依賴'dict .__ str__'(順便說一下,如果你想返回一個對象,其默認字符串格式可以只需返回'str(self.toDict())')。 Python的dict表示看起來非常接近,大多數情況下都是有效的JSON,但是如果不使用JSON庫,會出現一些會讓你感到頭疼的情況。 – Iguananaut