Programming

; develop a program

Back-End/Python

[Python] 주요 특수 메소드 – 비교 연산자 관련 표현

Clloud_ 2022. 9. 28. 12:24
반응형

이번 포스팅에서는 파이썬의 특수 메소드 중  비교 연산자 관련 표현 시 사용하는 메소드에 대하여 공부를 해보고자 한다.

 


__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

 


 

반응형