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 |