1. ホーム
  2. python

[解決済み] PythonでGenerics/templates?

2022-02-17 12:48:48

質問

Pythonはジェネリック/テンプレートタイプのシナリオをどのように扱うのですか? 例えば、外部ファイル "BinaryTree.py" を作成して、任意のデータ型に対してバイナリツリーを処理させたいと思っています。

つまり、カスタムオブジェクトの型を渡して、そのオブジェクトのバイナリツリーを作成することができます。 Pythonではどのように行うのですか?

どのように解決するのですか?

Pythonは ダックタイピング そのため、複数の型を処理するための特別な構文は必要ありません。

C++出身者なら、テンプレート関数/クラスで使われる演算が何らかの型に定義されていれば T (構文レベルで)その型の T をテンプレートに追加します。

つまり、基本的には同じように動作するのです。

  1. バイナリツリーに挿入したい項目の種類のコントラクトを定義する。
  2. このコントラクトを文書化する (例: クラスのドキュメントに記載する)
  3. 契約で指定された操作のみを使ってバイナリツリーを実装する。
  4. 楽しむ

しかし、明示的な型チェックを書かない限り(これは通常推奨されない)、二分木が選択された型の要素だけを含むことを強制することはできないことに注意してください。