Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对从Python列表继承的类进行排序_Python_List_Inheritance_Overriding - Fatal编程技术网

对从Python列表继承的类进行排序

对从Python列表继承的类进行排序,python,list,inheritance,overriding,Python,List,Inheritance,Overriding,鉴于以下实施: 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'> 类MyL

鉴于以下实施:

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'>
类MyList(列表):
定义初始化(self,arg=None):
super(MyList,self)。\uuuuu init\uuuuuu(arg)
myList=myList([1,3,2])
打印类型(myList)#打印
打印类型(已排序(myList))#打印

是否有list()的任何方法可以重写,以便
sorted()
将返回
MyList()的实例

不,没有
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'>
类MyList(列表): ... 定义初始化(self,arg=None): ... super(MyList,self)。\uuuuu init\uuuuuu(arg) ... 通过 ... >>>myList=myList([1,3,2]) >>>myList.sort() >>>迈利斯特 [1, 2, 3] >>>类型(myList)
不,没有
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'>
类MyList(列表): ... 定义初始化(self,arg=None): ... super(MyList,self)。\uuuuu init\uuuuuu(arg) ... 通过 ... >>>myList=myList([1,3,2]) >>>myList.sort() >>>迈利斯特 [1, 2, 3] >>>类型(myList)
因为您调用了
super(MyList,self)。\uuu init\uu()
没有参数,您的列表对象实际上是完全空的。对,刚刚更正,因为您调用了
super(MyList,self)。\uuu init\uu()
没有参数,您的列表对象实际上是完全空的。对,刚刚更正