728x90
반응형
매직 메서드(Magic Method)
객체들은 여러 가지 동작을 수행하며 상호작용합니다.
이러한 동작을 제어하고 특별한 기능을 부여하기 위해 파이썬은 "매직 메서드" 또는 "던더 메서드"라고 불리는 특별한 메서드를 제공합니다.
이번 블로그에서는 파이썬의 매직 메서드에 대해 상세히 알아보고,
이들 메서드가 어떻게 사용되는지 예시를 통해 설명하겠습니다.
1.매직 메서드(Magic Method)란?
매직 메서드는 파이썬에서 특별하게 처리되는 메서드로, 언더스코어 두 개(__)로 시작하고 끝나는 이름을 가집니다.
예를 들어, `__init__`, `__str__`, `__add__` 등이 매직 메서드의 대표적인 예시입니다.
이러한 매직 메서드들은 클래스 정의 시 특정 동작을 지정하여 객체의 행동을 제어하는데 사용됩니다.
2. 몇 가지 자주 사용되는 매직 메서드
- `__inti__`
- 객체가 생성될 때 호출되는 생성자(constructor)로, 초기화 작업을 수행합니다.
- `__str__`
- `str()` 함수로 객체를 문자열로 변환할 때 호출되는 메서드로, 객체의 문자열 표현을 반환합니다.
- `__repr__`
- `repr()` 함수로 객체를 표현식으로 변환할 때 호출되는 메서드로, 객체의 공식적인 문자열 표현을 반환합니다.
- `__add__`
- `+` 연산자로 객체를 더할 때 호출되는 메서드로, 객체의 덧셈 동작을 정의합니다.
- `__len__`
- `len()` 함수로 객체의 길이를 구할 때 호출되는 메서드로, 객체의 길이를 반환합니다.
- `__getitem__`
- 인덱스 연산자 `[]`로 객체의 특정 요소에 접근할 때 호출되는 메서드로, 객체를 시퀀스처럼 인덱싱하도록 합니다.
3. 매직 메서드 사용 예시
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def __str__(self):
return f"Rectangle: {self.width} x {self.height}"
def __repr__(self):
return f"Rectangle({self.width}, {self.height})"
def __add__(self, other):
return Rectangle(self.width + other.width, self.height + other.height)
def __len__(self):
return 2 * (self.width + self.height)
def __getitem__(self, index):
if index == 0:
return self.width
elif index == 1:
return self.height
else:
raise IndexError("Invalid index")
# 객체 생성
rect1 = Rectangle(5, 10)
rect2 = Rectangle(3, 7)
# 매직 메서드 활용
print(rect1) # 출력: Rectangle: 5 x 10
print(repr(rect1)) # 출력: Rectangle(5, 10)
print(rect1 + rect2) # 출력: Rectangle: 8 x 17
print(len(rect1)) # 출력: 30
print(rect1[0]) # 출력: 5
4. 매직 메서드를 활용한 유연하고 표현력 높은 코드
매직 메서드를 사용하면 객체의 동작을 특별하게 제어할 수 있으므로 코드가 더 유연하고 표현력이 높아집니다.
이를 통해 파이썬에서 강력하면서도 간결한 코드를 작성할 수 있습니다.
이번 블로그에서는 파이썬의 매직 메서드에 대해 알아보았습니다.
매직 메서드는 언더스코어 두 개로 시작하고 끝나는 특별한 이름을 가진 메서드로,
객체의 동작을 제어하는 마법같은 기능을 가지고 있습니다.
`__init__`, `__str__`, `__add__`, `__len__`, `__getitem__` 등 다양한 매직 메서드를 사용하여 클래스를 더욱 유연하고 표현력 높은 방식으로 정의할 수 있습니다.
잘못된 정보는 댓글로 알려주시면 감사하겠습니다.
728x90
반응형
'Python' 카테고리의 다른 글
Python - 22. 파이썬 오류 처리(Error Handling) (0) | 2023.07.24 |
---|---|
Python - 21. 파이썬 상속(Inheritance) (0) | 2023.07.23 |
Python - 19. 파이썬 객체 지향 프로그래밍(OOP : Object-Oriented Programing) (0) | 2023.07.21 |
Python - 18. 파이썬의 map함수 (0) | 2023.07.20 |
Python - 17. 파이썬의 filter 함수 (0) | 2023.07.19 |