"foo == None"에 ==는 뭘 기준으로 비교하나요?

조회수 4049회

여기서 정수를 is로 비교하는게 이상해요를 보면서 든 생각인데 isid()를 비교한다면 ==는 뭘 기준으로 비교하나요?

정수같은 기본적인 타입은 그냥 값을 비교하면 되는데 객체같은건 어떻게 비교하는지 궁금합니다.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    ==__eq__() 메소드로 true/false를 return합니다. __eq__()는 기존의 타입이나 유저가 정의한 클래스에도 포함돼 있고 재 정의도 가능합니다.

    class foo(object):
        def __eq__(self, other): #이 클래스에 인스턴스는 뭘 비교해도 항상 true를 return함
            return True
    
        def __init__(self):
            self.a = 5
            self.b = 4
    
    class bar(object):
        def __eq__(self, other): #이 클래스에 인스턴스는 뭘 비교해도 항상 false를 return함
            return False
    
    myfoo1 = foo()
    myfoo2 = foo()
    mybar1 = bar()
    
    print("myfoo1 == myfoo2:\t", myfoo1 == myfoo2)
    print("myfoo1 == 3:\t\t", myfoo1 == 3)
    print("3 == myfoo1:\t\t", 3 == myfoo1)
    
    
    print("myfoo1 == mybar1:\t", myfoo1 == mybar1)
    print("mybar1 == myfoo1:\t", mybar1 == myfoo1)
    

    출력 :

    myfoo1 == myfoo2:    True
    myfoo1 == 3:         True
    3 == myfoo1:         True
    myfoo1 == mybar1:    True
    mybar1 == myfoo1:    False
    

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

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

(ಠ_ಠ)
(ಠ‿ಠ)