如何查看和覆蓋內置類的完整定義?我看過the library docs但我正在尋找更多的東西。覆蓋內置類(Python)
例如,是否有可能重寫數組類,以便基本索引從1開始而不是從0開始,或者將列表的.sort()
重寫爲我自己喜歡的排序算法?
如何查看和覆蓋內置類的完整定義?我看過the library docs但我正在尋找更多的東西。覆蓋內置類(Python)
例如,是否有可能重寫數組類,以便基本索引從1開始而不是從0開始,或者將列表的.sort()
重寫爲我自己喜歡的排序算法?
您可以繼承自內建類型並覆蓋或添加行爲。如果你應這是另一個問題。對於基於n的列表的實現(例如從1開始)see this link(數組應該非常相似)。
對於排序,您可以簡單地使用sorted
上的鍵功能。
謝謝你的幫助。 – Yipeng 2010-05-09 16:07:26
創建自己sort()
方法,它是如此簡單:
class MyList(list):
def sort(self):
return 'custom sorting algorithm'
mylist = MyList([1,2,3])
mylist.sort() # => 'custom sorting algorithm'
我不會建議改變列表被收錄爲違背最佳實踐的方法,所以我甚至不提供示例那!無論何時你想打破運算符重載或索引等慣例,我覺得你應該重新思考爲什麼你要這樣做並適應慣例。
無論是否可能 - 你真的想這麼做嗎?我的意思是將Python中的數組替換爲另一個不同的工作,以至於所有使用Array的Python庫中的所有代碼都會中斷? – eemz 2010-05-07 16:24:20
從紅寶石移植? – 2010-05-07 16:47:47
我明白你爲什麼想要開發自己的MyArray類,它的工作方式類似於Ruby數組,或者其他什麼,但是海報問他用全部的Python替換了Python的Array類。 – eemz 2010-05-07 17:24:32