如何查看和覆盖内置类的完整定义?我看过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