組み込みクラスの完全な定義を表示およびオーバーライドするにはどうすればよいですか? 私はライブラリのドキュメントを見てきましたが、もっと何かを探しています。
たとえば、ベース インデックスが 0 ではなく 1 から始まるように配列クラスをオーバーライドしたり.sort()
、リストを自分好みの並べ替えアルゴリズムにオーバーライドしたりできますか?
組み込みクラスの完全な定義を表示およびオーバーライドするにはどうすればよいですか? 私はライブラリのドキュメントを見てきましたが、もっと何かを探しています。
たとえば、ベース インデックスが 0 ではなく 1 から始まるように配列クラスをオーバーライドしたり.sort()
、リストを自分好みの並べ替えアルゴリズムにオーバーライドしたりできますか?
独自のsort()
メソッドを作成するには、次のように簡単です。
class MyList(list):
def sort(self):
return 'custom sorting algorithm'
mylist = MyList([1,2,3])
mylist.sort() # => 'custom sorting algorithm'
ベスト プラクティスに反するため、リストのインデックス作成方法を変更することはお勧めしません。そのため、その例も示していません。演算子のオーバーロードやインデックス作成などの慣習を破りたいときはいつでも、なぜそうしたいのかを再考し、慣習に適応する必要があると思います。
組み込みの型から継承し、動作をオーバーライドまたは追加できます。これを行う必要がある場合は、まったく別の質問です。nベースのリスト(たとえば1から始まる)の実装については、このリンクを参照してください(配列は非常に似ているはずです)。
並べ替えには、のキー関数を使用できますsorted
。