이 글의 내용은 Python 사용자 정의 객체의 슬라이싱 기능(코드 예제)에 대한 소개입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
1. 매직 메소드: __getitem__()
클래스를 정의할 때 매직 메소드 __getitem__()
를 구현하기만 하면 사용자 정의 객체가 슬라이싱 구문을 지원하도록 만드는 것이 어렵지 않습니다. 그럼 먼저 이 방법을 소개하겠습니다.
구문: object.__getitem__(self, key)
공식 문서 해석: 호출됨 self[key] 평가를 구현하려면 시퀀스 유형이 허용됩니다. 키는 정수여야 하고 슬라이스 객체여야 합니다. 음수 인덱스 해석(클래스가 시퀀스 유형)은 __getitem__() 메서드에 따라 다릅니다. 부적절한 유형의 값인 경우 TypeError가 발생할 수 있습니다. 시퀀스의 인덱스 집합 외부(특수 항목 이후) 음수 값 해석), IndexError가 발생해야 합니다. 매핑 유형, 키가 누락된 경우(컨테이너에 없음) KeyError는 다음과 같습니다.
요약 번역: __getitem__() 메서드는 매개변수 키를 반환하는 데 사용됩니다. 해당 값인 이 키는 정수 값 또는 슬라이스 객체일 수 있으며 키가 위의 두 가지 유형이 아닌 경우 음수 인덱스를 지원합니다. TypeError; 인덱스가 범위를 벗어나면 IndexError가 발생합니다. 매핑 유형이 정의되어 있으면 키 매개변수가 해당 객체의 키 값이 아닌 경우 발생합니다. 키 오류.
2. 슬라이싱 기능 구현을 위한 시퀀스 맞춤화
다음으로 간단한 MyList를 정의하고 여기에 슬라이싱 기능을 추가합니다. (PS: 데모용일 뿐이며 다른 기능의 완전성은 보장되지 않습니다.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
출력 결과를 보면 맞춤형 MyList는 인덱스별 검색과 슬라이싱 작업을 모두 지원하는데, 이것이 바로 우리의 목적입니다.
특별히 참고할 점은 이 예에서 __getitem__()입니다. 이 메소드는 다양한 매개변수 유형에 따라 다양한 기능(인덱스 비트 값 또는 슬라이스 값 가져오기)을 구현하고 예외도 적절하게 처리하므로 번거로운 처리 논리를 작성할 필요가 없습니다. 완전히 오해를 불러일으키는 학습 자료가 인터넷에 많이 있습니다. 이러한 자료에서는 다양한 유형의 매개변수를 구별한 다음 색인 검색 및 슬라이싱 구문을 구현하는 큰 코드를 작성하는 방법을 가르칩니다. 다음은 대표적인 오류 예시입니다.
1 2 3 4 5 6 7 8 9 10 |
|
3. 슬라이싱 기능 구현을 위한 커스텀 사전
슬라이싱은 시퀀스형의 기능이므로 위 예시에서는 슬라이싱의 구체적인 구현 로직을 작성할 필요가 없습니다. . 그러나 다른 비순차적 유형의 사용자 정의 개체의 경우에는 슬라이싱 논리를 직접 구현해야 합니다. 사용자 정의 사전을 예로 들어 보겠습니다(PS: 이는 데모용일 뿐이며 다른 기능의 완전성은 보장되지 않습니다):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
위 예의 핵심은 핵심은 범위를 벗어난 인덱스와 음수 인덱스에 대해 걱정할 필요가 없으며 사전 슬라이스가 사전 키 값의 슬라이스로 변환된다는 것입니다. 드디어 달성됩니다.
4. 요약
최종 요약: 이 글은 __getitem__() 매직 메소드를 소개하고 사용자 정의 객체의 슬라이싱 기능을 구현하는 데 사용됩니다(목록 유형 및 사전 유형을 예로 들어). 너.
위 내용은 슬라이싱 기능을 구현하기 위한 Python 사용자 정의 객체 소개(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!