34.6 심사문제 답안 제출전에 jupyter notebook 으로 코드를 확인한 뒤 제출하였습니다.
(아래 첨부파일 확인)
결과가 똑같이 나오는 것을 확인한 뒤 제출하였는데, 제 코드가 틀렸다고 합니다.
차이를 확인해보니 제 코드에는 def tibbers(self) 에서 self.ability_power ability_power 로 적었습니다.
질문 1)
__ init__ 에 넣은 속성을 다른 매서드에서 사용할 땐 self. 를 붙혀야 한다고 하셨는데 제 경우엔 문제없이 코드가 작동하는 이유가 무엇일까요? visual studio code와 jupyter notebook이 조금 다르듯, 이것도 Jupyter notebook의 특징일까요?
질문2)
심사문제 합격여부는 코드가 원하는 출력값을 내는지 여부로 판단되나요? 아니면 정답코드와의 일치여부로 판단되나요?
여담으로, 게임에서 나오는 요소를 문제제작에 활용하니 친근한 느낌이 듭니다 :D
해당 코드의 경우 제대로 작동이 되는 것 처럼 보이긴 하지만 사실 함정이 한 가지 있습니다.
질문자의 코드에서 input을 통해 health, mana, ability_power의 값을 할당시켰고 그 다음에 x에 Annie객체를 생성하였는데요 이 이후에 x.tibbers()를 통해 코드를 실행을 시켰을 경우 x객체 내의 ability_power는 객체내의 self.ability_power가 아닌 input을 통해 할당을 시켜주었던 ability_power의 값을 사용하게 됩니다. 즉 코드가 정상적으로 실행은 되지만 심사문제에서 요구했던 것은 객체의 속성을 이용하여 매서드를 실행시키기를 원했기 때문에 틀렸다는 결과가 나오게 됩니다!
--> 실제로 input을 통해 받는 변수 중 ability_power를 ap로 변경시켰을 경우 실행이 되지 않으실 겁니다.
2번째 질문의 경우 정답코드가 따로 있는것이 아니고 출력값이 올바른 과정을 통해 구하였을 경우 맞았다고 체크가 되는 것으로 알고 있습니다!