편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2020.09.17

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


    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__()에서 실행이 안될 거라고 생각했는데... 이런 경우에는 왜 그런 건가요? 검색해봐도 모르겠어서 질문 남겨봅니다 도와주세요.

  • 프로필 알 수 없는 사용자님의 편집
    날짜2020.09.17

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


    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__()에서 실행이 안될 거라고 생각했는데... 이런 경우에는 왜 그런 건가요? 검색해봐도 모르겠어서 질문 남겨봅니다 도와주세요 ㅠㅠ