작성
·
157
1
안녕하세요? 강의해 주신 내용에 많은 도움을 받고 있습니다.
한가지 질문은 강의 1:33 이후에
class BigNumberError(Exception):
pass
로 되어 있는 부분에서 pass 대신 삽입하신 아래 네 문장을
삽입하지 않고 pass 로 그대로 두어도 프로그램 실행이 되며, 실행 결과도 동일한데요,
def __init__ (self, msg):
self.msg = msg
def __str__(self):
return self.msg
1. 위 네 줄의 내용이 혹시... 부모 클래스인 Exception 에 이미 동일하게 정의되어 있는 속성이기 때문인 것은 아닌지... 문의드립니다.
2. __init__(self, msg) 메서드에 의해서 해당 예외 클래스에 외부 메세지를 입력 받아서 msg 속성에 저장할 수 있는 특성을 부여한다는 것으로 이해하되는데, __str__() 메서드는 어떤 의미를 가지는지.. 문의드립니다. 알것 같으면서도 애매하게 느껴지는 부분이 있네요... ^^;;;
답변 1
2
맞습니다. __str__ 이 없어도 msg 에 입력한 값이 출력됩니다. 하지만 만약 에러 메시지를 개발자가 변경하여
return [에러코드 001] + self.msg
이런 식으로 출력하고 싶을 수도 있기 때문에 __str__ 에 대해 설명을 드린 것입니다. ^^
마찬가지로 예외 msg 를 정의할 때도 입력받은 값을 가공하여 다르게 값을 처리할 수도 있겠지요!