如何查看和覆盖内置类的完整定义?我见过the library docs但我正在寻找更多的东西。
例如是否有可能覆盖数组类,使基本索引从1而不是0开始,或者将列表的.sort()
覆盖为我自己喜欢的排序算法?
答案 0 :(得分:7)
要创建自己的sort()
方法,它就像这样简单:
class MyList(list):
def sort(self):
return 'custom sorting algorithm'
mylist = MyList([1,2,3])
mylist.sort() # => 'custom sorting algorithm'
我不建议更改列表的索引方式,因为这违反了最佳做法,所以我甚至没有提供一个例子!每当你想要破坏运算符重载或索引等内容的约定时,我觉得你应该重新考虑为什么要这样做并适应约定。
答案 1 :(得分:3)
你可以继承内置类型并覆盖或添加行为。如果你应这样做,那么完全是另一个问题。对于基于n的列表的实现(例如从1开始)see this link(数组应该非常相似)。
对于排序,您只需使用sorted
上的关键功能。