覆盖内置类(Python)

时间:2010-05-07 16:20:38

标签: python override built-in

如何查看和覆盖内置类的完整定义?我见过the library docs但我正在寻找更多的东西。

例如是否有可能覆盖数组类,使基本索引从1而不是0开始,或者将列表的.sort()覆盖为我自己喜欢的排序算法?

2 个答案:

答案 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上的关键功能。