鉴于以下实施:
class MyList(list):
def __init__(self, arg=None):
super(MyList, self).__init__(arg)
myList = MyList([1,3,2])
print type(myList) # print <class '__main__.MyList'>
print type(sorted(myList)) # print <type 'list'>
是否有任何list()方法可以覆盖,sorted()
将返回MyList()
的实例?
答案 0 :(得分:4)
不,没有; sorted()
始终返回一个列表,无论您传递给它的是什么。这不仅限于您的自定义类。
sorted()
接受任何迭代,包括生成器,并输出一个排序列表:
>>> sorted((1, 4, 2))
[1, 2, 4]
>>> sorted(xrange(4, -1, -1))
[0, 1, 2, 3, 4]
您的课程将采用自定义.sort()
方法,因此就地排序仍应有效:
>>> class MyList(list):
... def __init__(self, arg=None):
... super(MyList, self).__init__(arg)
... pass
...
>>> myList = MyList([1,3,2])
>>> myList.sort()
>>> myList
[1, 2, 3]
>>> type(myList)
<class '__main__.MyList'>