ホームページ バックエンド開発 Python チュートリアル Python の __len__() 関数と __getitem__() 関数を使用して反復可能なオブジェクトを定義する

Python の __len__() 関数と __getitem__() 関数を使用して反復可能なオブジェクトを定義する

Aug 22, 2023 am 09:34 AM
python 反復可能なオブジェクト __len__() __getitem__()

Python の __len__() 関数と __getitem__() 関数を使用して反復可能なオブジェクトを定義する

Python の __len__() 関数と __getitem__() 関数を使用して反復可能なオブジェクトを定義する

最近 Python を学習していたときに、非常に興味深い関数を発見しました。 () 関数と __getitem__() 関数を使用すると、反復可能なオブジェクトを自分で定義できます。この記事では、これら 2 つの関数を使用して反復可能オブジェクトを定義する方法と、対応するコード例を紹介します。

Python では、__len__() 関数を使用して、オブジェクトの長さ、つまり要素の数を返します。この関数は整数を返す必要があります。自分でオブジェクトを定義し、len() のような関数を使用してオブジェクトの長さを取得できるようにしたい場合は、オブジェクト内で __len__() 関数を定義できます。

次の例は、反復可能なオブジェクトを定義し、その中で __len__() 関数を定義する方法を示しています。

class MyList:
  def __init__(self):
    self.data = []
  
  def __len__(self):
    return len(self.data)
ログイン後にコピー

この例では、MyList クラスと __len__() を定義します。その中で関数が定義されています。この関数は、self.data の長さを返します。これは、カスタム オブジェクト内の要素の数です。

__len__() 関数に加えて、__getitem__() 関数を使用してオブジェクト内の要素を取得することもできます。この関数はインデックスをパラメータとして受け取り、対応する要素を返します。 __getitem__() 関数を定義すると、リストやタプルを使用するのと同じように、インデックスによってカスタム オブジェクト内の要素を取得できます。

次の例は、反復可能オブジェクトで __getitem__() 関数を定義する方法を示しています。

class MyList:
  def __init__(self):
    self.data = []

  def __len__(self):
    return len(self.data)
  
  def __getitem__(self, index):
    return self.data[index]
ログイン後にコピー

この例では、MyList クラスで __getitem__() 関数を定義します。この関数はパラメータとしてインデックスを受け取り、self.data 内の対応するインデックスの要素を返します。

2 つの関数 __len__() と __getitem__() を定義すると、リストを使用するのと同じように、独自に定義した反復可能なオブジェクトを使用できます。以下は、カスタム反復可能オブジェクトの使用方法を示す例です。

mylist = MyList()
mylist.data = [1, 2, 3, 4, 5]

print(len(mylist))    # 输出:5

print(mylist[0])      # 输出:1
print(mylist[3])      # 输出:4
ログイン後にコピー

この例では、最初に MyList オブジェクトを作成し、次にオブジェクトのデータ属性に値を割り当てます。次に、len() 関数を使用してオブジェクトの長さを取得し、インデックスによってオブジェクト内の要素を取得します。

上記のコード例を通して、__len__() 関数と __getitem__() 関数を定義することで、反復可能なオブジェクトを自分で定義し、このオブジェクトをリストのように使用できることがわかります。この機能は非常に強力で、プログラムに優れた柔軟性と拡張性をもたらします。

要約すると、Python の __len__() 関数と __getitem__() 関数は反復可能なオブジェクトの定義に役立ち、リストのようなカスタム オブジェクトを使用できるようになります。実際のプログラミングでは、これら 2 つの関数を必要に応じて定義することで、より柔軟で便利な関数を実現できます。この記事があなたのお役に立てば幸いです!

以上がPython の __len__() 関数と __getitem__() 関数を使用して反復可能なオブジェクトを定義するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

テンプレートのメリットとデメリットは何ですか? テンプレートのメリットとデメリットは何ですか? May 08, 2024 pm 03:51 PM

テンプレートのメリットとデメリットは何ですか?

Deepseek Xiaomiをダウンロードする方法 Deepseek Xiaomiをダウンロードする方法 Feb 19, 2025 pm 05:27 PM

Deepseek Xiaomiをダウンロードする方法

Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表 Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表 Jul 01, 2024 am 07:22 AM

Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表

いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する May 06, 2024 pm 04:43 PM

いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する

どうやって彼にdeepseekに尋ねますか どうやって彼にdeepseekに尋ねますか Feb 19, 2025 pm 04:42 PM

どうやって彼にdeepseekに尋ねますか

評価関数の保存方法 評価関数の保存方法 May 07, 2024 am 01:09 AM

評価関数の保存方法

DeepSeekを検索する方法 DeepSeekを検索する方法 Feb 19, 2025 pm 05:18 PM

DeepSeekを検索する方法

NET40とはどのようなソフトウェアですか? NET40とはどのようなソフトウェアですか? May 10, 2024 am 01:12 AM

NET40とはどのようなソフトウェアですか?

See all articles