Python/파이썬 심화

매직 메서드 (2)

monstro 2025. 7. 29. 23:32
728x90
반응형

- 개요

이전에 알아본 매직 메서드를 오버라이드하여 기능을 확장하는 방법을 알아본다

 

- 매직 메서드의 오버라이드

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age

    def __str__(self):
        return f"My name is {self._name} and I am {self._age} years old"

    def __add__(self, other):
        return self._age + other._age

    def __sub__(self, other):
        return self._age - other._age

    def __ge__(self, other):
        return self._age >= other._age

    def __le__(self, other):
        return self._age <= other._age

 

위와 같이 클래스 Person을 생성하였다

멤버변수에 _(언더스코어)를 수식하여 되도록 클래스 내에서만 사용하도록 설정하였다

 

생성한 인스턴스를 설정하는 __init__ 함수인스턴스의 정보를 문자열로 출력하는 __str__ 함수

제외한 4개의 함수를 추가하였고 각각의 역할은 다음과 같다

  • __add__ 함수 : Person 클래스의 인스턴스의 age와 다른 인스턴스의 age합한 결과를 리턴
  • __sub__ 함수 : Person 클래스의 인스턴스의 age와 다른 인스턴스의 age뺀 결과를 리턴
  • __ge__ 함수 : Person 클래스의 인스턴스의 age와 다른 인스턴스의 age비교(더 경우)
  • __le__ 함수 : Person 클래스의 인스턴스의 age와 다른 인스턴스의 age비교(더 작은 경우)

 

- 실제 사용

...

p1 = Person("Jake", 25)
p2 = Person("Amanda", 22)

print(p1 + p2)
print(p1 - p2)
print(p1 >= p2)
print(p1 <= p2)

 

위와 같이 2개의 Person 클래스의 인스턴스를 생성하고

인스턴스 간의 더하기 연산 / 빼기 연산 / 비교연산(더 큰 경우) / 비교연산(더 작은 경우)을 수행한다

 

 

실행 결과는 위와 같다

728x90
반응형

'Python > 파이썬 심화' 카테고리의 다른 글

네임드 튜플 (1)  (0) 2025.08.04
매직 메서드 (3)  (0) 2025.08.04
매직 메서드 (1)  (0) 2025.07.29
클래스 & 메서드 (4)  (0) 2025.07.28
클래스 & 메서드 (3)  (0) 2025.07.24