파이썬 던더 메소드에 관하여 질문 합니다.

조회수 513회
class Food:

    def __init__(self,taste,calorie):
        self._taste = taste
        self._calorie = calorie

    def __gt__(self, other):
        if self._taste == other._taste:
            return(self._calorie < other._calorie)
        else:
            return self._taste > other._taste


strawberry = Food(9, 32)
potato = Food(6, 66)
print(strawberry < potato)

안녕하세요 파이썬 공부중인 초보자입니다. 공부 중 모르는게 생겨서 질문 드립니다. 클래스 던더 메소드를 정의하는 과정에서 __gt__(self, other) 메소드는 self > other 연산을 호출하는 경우라고 알고 있습니다. 근데 위에 코드를 봐주시면, 실행 시에 print(strawberry < potato) 라고 self < other 연산을 실행하도록 했음에도 위에 정의한 __gt__() 메소드가 실행되더라구요. 저는 __lt__()라는 self < other 를 호출하는 메소드가 따로 있길래 __gt__()에서 실행이 안될 거라고 생각했는데... 이런 경우에는 왜 그런 건가요? 검색해봐도 모르겠어서 질문 남겨봅니다 도와주세요.

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)