Ваш код будет содержать ошибку: TypeError: sort() takes no positional arguments
.
self.sort
имеет проблему, сортировка принадлежит list
, а не экземпляру list
или SortedList
, self
, вот экземпляр SortedList
. Таким образом, использование list.sort(self.values)
или self.values.sort()
вместо self.sort(self.values)
будет работать.
обновление: для большей ясности, с a = [1, 2, 3]
, a.sort() equals to list.sort(a)
. sort
на самом деле не относится к экземпляру списка.
Извините за мой плохой английский. Я чувствую, что не очень хорошо выразил это ...
обновить еще раз: да, я могу показать информацию с кодом:
In [18]: a = [1, 2, 3]
In [19]: a.sort
Out[19]: <function list.sort(*, key=None, reverse=False)>
# but
In [20]: a.sort is list.sort
Out[20]: False
# I think python makes some trick here...
# so...
In [21]: list.sort
Out[21]: <method 'sort' of 'list' objects>
В любом случае, я надеюсь, вы понимаете, почему self.sort(self.values)
не может работать, с моим не очень выразительным объяснением.
Кажется, я забыл показать код, который может работать ...
На основании моего объяснения:
class SortedList(list):
def __init__(self, values):
super().__init__(values)
super().sort()
x = SortedList([1, 3, 2])
print(x)