일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 컴퓨터공학
- 코딩
- 알고리즘
- 머신러닝
- 프로그래밍
- 소프트웨어
- 2
- 버전관리
- 소프트웨어공학
- 컴퓨터과학
- Yes
- 인공지능
- 데이터분석
- I'm Sorry
- 컴퓨터비전
- 네트워크
- 자료구조
- 데이터구조
- 파이썬
- 자바스크립트
- 딥러닝
- 네트워크보안
- 데이터과학
- 클라우드컴퓨팅
- 프로그래밍언어
- 보안
- 데이터베이스
- 사이버보안
- 웹개발
- 빅데이터
- Today
- Total
스택큐힙리스트
왜 NotImplementedError를 발생시키는 대신 NotImplemented를 반환합니까? 본문
파이썬에는 NotImplemented라는 싱글톤이 있습니다.
왜 누군가가 유효하지 않은 방법을 실행하는 코드와 같은 버그를 찾기 어려워 질 것이라는 이유로 예외를 발생시키는 대신 #$! & @$ !! $ &를 반환하고 싶어 할까요?
답변 1
그것은 __lt__()와 관련된 비교 방법이 목록 정렬 등에서 간접적으로 꽤 자주 사용되기 때문입니다. 때때로 알고리즘은 다른 방법을 시도하거나 기본 우승자를 선택하기도합니다. 예외를 발생시키면 소트가 종료되며 잡힐 때까지 빠져나오지 않습니다. 하지만 NotImplemented는 발생되지 않으며 추가적인 테스트에서 사용할 수 있습니다.
http://jcalderone.livejournal.com/32837.html
그 링크를 요약하면:
NotImplemented는 런타임에 신호를 보내서 다른 사람에게 작업을 처리하도록 요청합니다. 표현식 @# , if #$#&^에서 만약 (b) returns #이 NotImplemented를 반환하면 Python은 b.__eq__(a)을 시도합니다. 만약 b이 충분한 정보를 가지고 True나 False를 반환할 수 있다면 표현식은 성공할 수 있습니다. 그렇지 않으면 런타임은 내장된 동작으로 돌아가게 됩니다(이 경우 ==와 !=에 기반하여 동작합니다).
답변 2
NotImplemented를 발생시키는 대신 NotImplementedError를 발생시키는 것은 왜 좋지 않을까요?Python 언어에서 Not Implemented와 Not ImplementedError는 다른 목적을 가지고 있습니다. Not Implemented는 특별한 구현이 없을 때 프로그래머가 표현할 수 있는 예외 타입입니다. 반면에, Not Implemented Error는 상속한 메서드 등에서 구현되지 않았을 때 예외를 발생시키는 기본 예외 타입입니다.
따라서, 기능 구현을 하지 않아도 될 경우 Not Implemented를 반환하여 예외를 처리할 수 있는 장점이 있습니다. 이는 코드의 읽기 쉬움과 가독성을 높여줍니다. 반면에 NotImplementedError를 발생시키면, 호출하는 측에서 예외를 처리해야 하기 때문에 보다 불편합니다.
또한, Not Implemented을 발생시키게 되면, 호출하는 측에서 이를 처리하도록 요청할 수 있습니다. 이는 API 개발에 있어서 유용한 방법이 됩니다. 예를 들어, 특정 기능이 아직 구현되지 않았을 때 Not Implemented를 반환하도록 설정하면, 이를 호출하는 클라이언트에서 이를 처리할 수 있도록 해줄 수 있습니다.
따라서, Not Implemented를 반환하는 것이 예외 처리의 용이성과 API 개발에서 유용한 방법으로 활용될 수 있는 등 여러 장점이 있습니다. 이러한 이유로, Python에서는 Not Implemented를 반환하는 것이 가장 바람직한 방법입니다.