이번 포스팅에서는 파이썬의 특수 메소드 중 비교 연산자 관련 표현 시 사용하는 메소드에 대하여 공부를 해보고자 한다.
__eq__ 메소드
' == '로 객체의 내용을 비교할 때 정의해야 한다.
__eq__(self, other) : → self == other
__lt__ / __gt__ 메소드
__lt__(self, other) : → self < other
min( )에서 인수로 사용할 경우 정의해야 한다.
__gt__(self, other) : → self > other
max( )에서 인수로 사용할 경우 정의해야 한다.
그 외 비교 연산자 관련 메소드
__ge__(self, other): → self >= other
__le__(self, other): → self <= other
__ne__(self, other): → self != other
산술 연산자 메소드
__add__(self, other) → self + other
__sub__(self, other) → self - other
__mul__(self, other) → self * other
__truediv__(self, other) → self / other
__mod__(self, other) → self % other
예제
순서 1. Person 클래스를 정의한다.
순서 2. __init__ 메소드로 생성자를 생성한다.
순서 3. __str__ 메소드로 객체를 생성한다.
순서 4. __repr__ 메소드로 객체를 생성한다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"이름: {self.name}, 나이: {self.age}"
def __repr__(self):
return f"Person('{self.name}', {self.age})"
비교 연산자들 재정의한다. (if isinstance(other, Person): => other가 Person 타입인지 확인)
def __eq__(self, other):
result = False
if isinstance(other, Person):
if self.name == other.name:
result = True
return result
def __gt__(self, other):
result = False
if isinstance(other, Person):
result = self.age > other.age
elif isinstance(other, int) or isinstance(other, float):
result = self.age > other
return result
def __add__(self, other):
if isinstance(other, Person):
result = self.age + other.age
return f"두 사람의 나이의 합은 {result}세 입니다."
elif isinstance(other, int):
return self.age + other
Person 클래스를 선언하고 변수를 대입한다.
p1 = Person("홍길동", 30)
p2 = Person("홍길동", 30)
[실행결과]
p1 > p2 # False
p1 > 10 # True
p1 + p2 # '두 사람의 나이의 합은 60세 입니다.'
p1 + 20 # 50
'Back-End > Python' 카테고리의 다른 글
[Python] 모듈(Module)과 패키지(Package) (2) | 2022.09.29 |
---|---|
[Python] 클래스(class) 메소드와 정적(static) 메소드 (0) | 2022.09.29 |
[Python] 주요 특수 메소드 – 문자열 표현 (0) | 2022.09.28 |
[Python] 주요 특수 메소드 – 객체 생성/소멸 (0) | 2022.09.28 |
[Python] 특수 메소드 (0) | 2022.09.28 |