我有一個環結構來實現如下(根據菜譜食譜,我發現):Python - 如何區分指向同一對象的兩個列表元素?
class Ring(list):
def turn(self):
last = self.pop(0)
self.append(last)
def setTop(self, objectReference):
if objectReference not in self:
raise ValueError, "object is not in ring"
while self[0] is not objectReference:
self.turn()
說我做到以下幾點:
x = Ring([1,2,3,4,4])
x.setTop(4)
我的代碼將永遠設置第一個4(目前x [3])到x [0]。它似乎(通過x [3]和x [4]之間的對象標識和哈希id測試)Python正在重用這4個對象。
我如何告訴Python我真的希望第二個4(當前是x [4])在頂部?
道歉的基本問題......作爲一個自學成才的初學者的垮臺之一。
感謝,
邁克
===編輯===
對於它的價值,我放棄了從類的機頂盒方法。我已經將它添加到標準配方思考「嘿,這將是整潔,可能是有用的。」由於答案(特別是「有什麼不同」),以及我自己使用結構展示的經驗,這是一種糟糕的方法,不支持我的任何用例。
換句話說,添加的東西,因爲我可以而不是履行需要=失敗。
怎麼是'機頂盒()'應該知道'4'你的意思只用'x.setTop(4)'調用?也許你只需要第二個參數來指出哪一個參數。 – martineau 2010-09-29 10:26:44