"foo == None"에 ==는 뭘 기준으로 비교하나요?
조회수 4052회
여기서 정수를 is로 비교하는게 이상해요를 보면서 든 생각인데 is
는 id()
를 비교한다면 ==
는 뭘 기준으로 비교하나요?
정수같은 기본적인 타입은 그냥 값을 비교하면 되는데 객체같은건 어떻게 비교하는지 궁금합니다.
1 답변
-
==
는__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
댓글 입력