class 만들 때 __eq__ 함수에서 만들고 있는 class(type)의 객체와의 비교는 어떻게 하나요
조회수 3010회
예를 들어서
class num
def __init__(self,input_parm):
self.num = int(input_parm)
def __eq__(self, other):
이런 경우 (입력을 정수로 바꿔서 초기화 값으로 저장 ) 입력 parameter (input_parm)은 str, int ,num 타입을 받을 수 있다고 할때
num type을 입력 parameter으로 받을때는 int, str 타입을 받는 거와 마찬가지로
그냥 self.num = int(input_num)
해도 되는 건가요?
그리고 __eq__
부분에서도
num 타입이 other으로 들어왔을 때
self.num == other.num
return True
이렇게 해도 되는건가요??
같은 타입으로 입력 parameter이 들어왔을 때 어떻게 코딩을 짜야 하는지 모르겠습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
목적은 알 수 없으나
__eq__
매직 메소드는 단순해서 아래 예제정도면 충분하지 않을까 합니다.class My: def __init__(self, v): self.v = v def __eq__(self, other): return (self.__class__ == other.__class__ ) and (self.v == other.v) class ScarceMy: def __init__(self, v): self.v = v def __eq__(self, other): return self.v == other.v s_my1 = ScarceMy(10) s_my2 = ScarceMy(20) my1 = My(10) print(s_my1 == s_my2) # 이것은 값이 다르므로 당연히 False print(s_my1 == my1) # 같은 클래스의 객체가 아니므로 기대하는 것은 False 그러나 값만 비교하므로 True 가 됨 print(my1 == s_my1) # 같은 클래스인지 확인을 하므로 기대한 대로 False 가 됨
댓글 입력