>백엔드 개발 >파이썬 튜토리얼 >Python에서 __getitem__ 및 __setitem__은 다음을 의미합니다.

Python에서 __getitem__ 및 __setitem__은 다음을 의미합니다.

王林
王林앞으로
2023-08-19 22:05:061225검색

Python에서 __getitem__ 및 __setitem__은 다음을 의미합니다.

Python의 마법 메서드가 프로그래머로서 우리의 삶을 어떻게 더 쉽게 만들어 주는지 생각해 본 적이 있나요? 거의 길을 안내하는 도움이 되는 동반자가 있는 것처럼요? 이 기사에서는 Python의 매직 메소드 getitem 및 setitem을 살펴보고, 이를 이해하고, 표현력이 풍부하고 인간적인 코드를 작성하는 데 어떻게 도움이 되는지 알아봅니다. 시작하자!

마법의 방법을 이해하세요

"이중 밑줄" 메서드(약어로 "dunder" 메서드)라고도 알려진 Magic 메서드는 시작과 끝에 이중 밑줄이 있는 Python 클래스의 특수 메서드입니다. 이를 통해 클래스의 요소에 액세스하거나 수정하려는 경우와 같은 특정 상황에서 클래스가 작동하는 방식을 정의할 수 있습니다. 매직 메소드 중 두 가지는 getitem과 setitem으로, 사용자 정의 클래스의 요소를 검색하고 수정하는 방법을 정의합니다.

getitem의 마법

getitem 매직 메소드를 사용하면 목록, 사전 또는 기타 내장 Python 객체를 사용하는 것처럼 대괄호 표기법을 사용하여 사용자 정의 클래스의 요소에 액세스하는 방법을 정의할 수 있습니다. getitem 메소드로 클래스를 정의하면 익숙한 구문을 사용하여 해당 요소에 액세스할 수 있습니다. -

으아악

이것은 getitem 매직 메소드를 사용하여 기본 목록을 시뮬레이션하는 간단한 사용자 정의 클래스 MyList의 예입니다. -

1단계 목록을 입력으로 받아들이고 데이터 속성을 전달하는 생성자(__init__)가 있는 MyList라는 클래스를 정의합니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제