스택큐힙리스트

왜 NotImplementedError를 발생시키는 대신 NotImplemented를 반환합니까? 본문

카테고리 없음

왜 NotImplementedError를 발생시키는 대신 NotImplemented를 반환합니까?

스택큐힙리스트 2023. 4. 13. 00:24
반응형

파이썬에는 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를 반환하는 것이 가장 바람직한 방법입니다.

반응형
Comments