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


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

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

  • 2016년 02월 04일에 작성됨

조회수 274


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
  • 2016년 02월 04일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close