클래스를 특별한 값으로 사용하는 것은 파이썬에서 추한가? 내가 어떤 "정상"유형의 결과는 숫자 것으로 예상 경우, 또는클래스를 특별한 값으로 사용 하시겠습니까?
def find_result():
result = None
# do something to find the result, even recursing
return result
r = find_result()
if r is None:
raise Exception("we have no result")
이 완벽하게 작동합니다 :
이를 생각해 보자.
하지만 임의의 데이터 구조가 있고 그 결과가 None
에서 다른 구조로 바뀔 수 있다면 어떻게 될까요? 내가 내 경우에 한 일은이었다 같은 :
class NoResult:
"""i'm even less than `None`."""
pass
def query(data, path):
result = NoResult
# traverse and recurse into the data structure
return result
r = query()
if r is NoResult:
raise Exception("our hands are empty")
그것은 작동하지만 내가 조금, 여기 가난한 클래스를 학대 해요 느낌을 떨쳐 버릴 수도 숨어 진짜 위험이있을 수 있습니다 내부.
사실입니까? 내가 수업을 학대하는거야? 아니면 그것은 내 알고리즘이 "special None
"에 의존 할 필요가 있다면 그냥 쓰다니까?
아무 것도 반환하지 않고 'find_result'에서 예외를 발생시키지 않는 이유는 무엇입니까? 예외를 발생시키는 전체 아이디어는 특별한 반환 값을 인식하는 것과는 독립적 인 대체 오류 검색 메커니즘을 제공하는 것입니다. – chepner
@chepner 내가 더 재귀 할 필요가 있었기 때문에 나는 그것을 좋아했다. 그리고 내가 최고 전화로 돌아갈 때까지 검색을 멈추고 싶다는 것을 결코 알지 못했다. 이제는 적절한 예외 처리를 생각해 보면 더 좋을 수도 있습니다 ... –