3

組み込みクラスの完全な定義を表示およびオーバーライドするにはどうすればよいですか? 私はライブラリのドキュメントを見てきましたが、もっと何かを探しています。

たとえば、ベース インデックスが 0 ではなく 1 から始まるように配列クラスをオーバーライドしたり.sort()、リストを自分好みの並べ替えアルゴリズムにオーバーライドしたりできますか?

4

2 に答える 2

6

独自のsort()メソッドを作成するには、次のように簡単です。

class MyList(list):
    def sort(self):
       return 'custom sorting algorithm'

mylist = MyList([1,2,3])
mylist.sort() # => 'custom sorting algorithm'

ベスト プラクティスに反するため、リストのインデックス作成方法を変更することはお勧めしません。そのため、その例も示していません。演算子のオーバーロードやインデックス作成などの慣習を破りたいときはいつでも、なぜそうしたいのかを再考し、慣習に適応する必要があると思います。

于 2010-05-07T16:33:50.273 に答える
4

組み込みの型から継承し、動作をオーバーライドまたは追加できますこれを行う必要がある場合は、まったく別の質問です。nベースのリスト(たとえば1から始まる)の実装については、このリンクを参照してください(配列は非常に似ているはずです)。

並べ替えには、のキー関数を使用できますsorted

于 2010-05-07T16:26:24.020 に答える