ホームページ  >  記事  >  バックエンド開発  >  Python では、__getitem__ と __setitem__ は次のことを意味します。

Python では、__getitem__ と __setitem__ は次のことを意味します。

王林
王林転載
2023-08-19 22:05:061102ブラウズ

Python では、__getitem__ と __setitem__ は次のことを意味します。

Python の魔法のメソッドが、まるで私たちに道を導いてくれる助けになる仲間がいるかのように、プログラマとしての私たちの生活をどのように楽にしてくれるか考えたことはありますか? 同じですか?この記事では、Python の魔法のメソッドである getitem と setitem を調べてわかりやすくし、より表現力豊かで人間らしいコードを書くのにどのように役立つかを学びます。はじめましょう!

魔法のメソッドを理解する

「二重アンダースコア」メソッド (「ダンダー」メソッドと略称) とも呼ばれるマジック メソッドは、先頭と末尾に二重アンダースコアを持つ Python クラスの特別なメソッドです。これらを使用すると、クラスの要素にアクセスしたり変更したりするときなど、特定の状況でクラスがどのように動作するかを定義できます。マジック メソッドのうちの 2 つは getitem と setitem で、これらはカスタム クラスの要素を取得および変更する方法を定義します。

getitemの魔法

getitem マジック メソッドを使用すると、リスト、辞書、またはその他の組み込み Python オブジェクトを使用するのと同じように、角括弧表記を使用してカスタム クラスの要素にアクセスする方法を定義できます。 getitem メソッドを使用してクラスを定義すると、使い慣れた構文 -

を使用してその要素にアクセスできます。 リーリー

これは、単純なカスタム クラス MyList の例です。これは、getitem マジック メソッドを使用して基本的なリストをシミュレートします -

ステップ 1 MyList という名前のクラスを定義します。このクラスには、入力としてリストを受け取り、データ属性に渡されるコンストラクター (__init__) があります。

ステップ 2 __getitem__ マジック メソッドを実装します。このメソッドはインデックスをパラメータとして受け取り、データ属性から指定されたインデックスにある要素を返します。

ステップ 3 1 から 5 までの数字のリストを含むサンプル MyList を作成します。

ステップ 4 角かっこ表記を使用して、インデックス 1 の要素を出力します。出力は2となります。

Example

の中国語訳は次のとおりです:

Example

リーリー ###出力### リーリー

セットアイテムの魅力

getitem について説明したので、対応するメソッド setitem を見てみましょう。 setitem マジック メソッドを使用すると、角括弧表記を使用してカスタム クラスの要素を変更する方法を定義できます。 setitem メソッドを使用してクラスを定義すると、その要素を次のように変更できます -

リーリー

前の MyList の例を拡張して、setitem マジック メソッドを含めてみましょう -

ステップ 1

コンストラクター (__init__) を使用して MyList クラスを記述します。このクラスはリストを入力として受け取り、データ属性に格納します。

ステップ 2

__getitem__ マジック メソッドを実装します。このメソッドはインデックスをパラメータとして受け取り、指定されたインデックスのデータ特徴の詳細を返します。

ステップ 3

__setitem__ マジック メソッドを実行します。このメソッドはインデックスと価格をパラメータとして受け取り、指定されたインデックスのデータ属性内のアイテムのコストを削減します。 。

ステップ 4

番号 1 ~ 4 を使用して MyList インスタンスを作成します。

ステップ 5

角括弧表記を使用して、インデックス 1 の要素を出力します。出力は2となります。

ステップ 6

- 角かっこ表記を使用して、インデックス 1 の要素を新しい値 (42) に変更します。 __setitem__ メソッドが変更を処理します。

ステップ 7

角括弧表記を使用して、インデックス 1 の要素を再度出力します。ステップ 6 の変更により、出力は 42 になります。

Example

的中文翻译为:

示例

class MyList:
   def __init__(self, data):
      self.data = data

   def __getitem__(self, index):
      return self.data[index]

   def __setitem__(self, index, value):
      self.data[index] = value

my_list = MyList([1, 2, 3, 4, 5])
print(my_list[1])  # Output: 2

my_list[1] = 42
print(my_list[1]) 

输出

2
42

使用Getitem和Setitem的最佳实践

现在我们了解了getitem和setitem的魔法,让我们回顾一些使用这些方法创建更人性化代码的最佳实践 -

  • 使您的代码直观  在使用getitem和setitem时,目标是使其行为直观,类似于内置的Python对象,如列表、字典或数组。这将使您的自定义类更易于理解和接近。

  • 优雅地处理边界情况  要准备好处理边界情况,例如无效的索引或键。您可以引发适当的异常,如无效索引的IndexError或无效键的KeyError,以通知用户有关问题。

  • 使用清晰的变量名  在定义getitem和setitem方法时,使用清晰且描述性强的变量名作为索引和值。这将使您的代码更易读且更易管理。

  • 不要忘记切片  在您的getitem和setitem方法中考虑支持切片操作,使您的自定义类更加灵活和方便使用。

  • 保持一致  如果您的类同时实现了getitem和setitem,请确保它们的行为保持一致。例如,如果您的getitem方法支持负索引,那么您的setitem方法也应该支持。

结论

在本文中,我们探索了getitem和setitem魔术方法的神奇世界。这些强大的工具使我们能够创建具有直观和熟悉行为的自定义类,模仿内置的Python对象,使我们的代码更具表达力和人性化。

通过遵循我们讨论过的最佳实践,您将能够利用getitem和setitem的功能来创建自定义类,使其对其他程序员来说感觉自然而然,促进协作和理解。所以,请继续在您的Python项目中传播getitem和setitem的魔力,创建既迷人又功能强大的代码。祝您编码愉快!

以上がPython では、__getitem__ と __setitem__ は次のことを意味します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。