3
我想創建一個類,它將數據存儲在本地緩衝區中,並充當數據庫的接口。我有下面的代碼:__getitem__,__setitem__多個鍵Python
class Table(object):
def __init__(self, tableName, **columnDict):
self.tableName = tableName
self.columns = {}
self.types = {}
self.columns['id'] = []
self.types['id'] = 'INT PRIMARY KEY NOT NULL'
for name in columnDict:
self.columns[name] = []
self.types[name] = columnDict[name]
def updateBufferRow(self, index, updateDict):
for key in updateDict:
self.columns[key][index] = updateDict[key]
def getBufferRow(self, index):
row = {}
for key in self.columns:
row[key] = self.columns[key][index]
return row
def __getitem__(self, key, **args):
""" Allows using self[key] method """
return self.getBufferRow(key)
def __setitem__(self, key, value, **args):
""" Allows using self[key] = value method """
self.updateBufferRow(key, value)
這裏是我初始化表:
testTable = Table('BestTable', test = 'TestType', test2='INT')
它將按預期工作的唯一的事,如果我嘗試:
testTable[0]['test'] = "LALALA"
它什麼都不做另一方面,這更新而不是覆蓋表格:
testTable[0] = {"test": "LALALA"}
我知道我不得不重寫updateBufferRow()和getBufferRow()方法,但我不太確定的唯一方法是如何使用__getitem__和__setitem__方法獲得多個鍵 任何幫助/提示將不勝感激。感謝你們!
感謝馬亭,我我會嘗試一下 – Barmaley 2013-03-14 19:20:53
@Barmaley:我現在測試了代碼,並在那裏調用了__init__調用。 – 2013-03-14 19:27:56
我實際上改變了我的結構,它簡化了一切,現在它可以工作。 – Barmaley 2013-03-14 20:13:07