반응형
파이썬에서 특수 매서드란?
특수 메서드(또는 매직 메서드, 던더 메서드라고도 불림)는 Python에서 클래스에 정의할 수 있는 특별한 메서드로, 특정 연산자나 내장 함수가 객체에 대해 호출될 때 자동으로 호출되는 메서드입니다. 이 메서드들의 이름은 보통 두 개의 밑줄(__)로 시작하고 끝납니다. 특수 메서드를 통해 Python의 객체들이 예상하는 방식으로 동작하도록 만들 수 있습니다.
예를 들어, 두 개의 객체를 더할 때 + 연산자를 사용할 수 있습니다. 그런데 실제로는 Python이 객체 내부에서 __add__()라는 특수 메서드를 호출하여 그 연산을 수행하게 됩니다. 즉, a + b는 a.__add__(b)와 동일한 방식으로 동작하는 것입니다.
몇 가지 중요한 특수 메서드를 살펴보면 다음과 같습니다:
__init__(self, ...): 객체를 초기화할 때 호출되는 생성자 메서드입니다. 클래스의 인스턴스가 생성될 때 자동으로 호출됩니다.- 예:
obj = MyClass()하면,__init__()이 호출됩니다.
- 예:
__str__(self):print()와 같은 함수에서 객체를 문자열로 변환할 때 호출됩니다. 객체를 사람이 읽을 수 있는 문자열로 반환합니다.- 예:
print(obj)를 하면,obj.__str__()이 호출되어 출력됩니다.
- 예:
__repr__(self): 객체의 "공식적"인 문자열 표현을 반환하는 메서드입니다. 개발자가 객체를 이해하는 데 도움이 되는 정보를 출력할 때 사용됩니다. 보통 디버깅 시 많이 사용됩니다.- 예:
repr(obj)를 호출하면__repr__()이 호출됩니다.
- 예:
__add__(self, other): 두 객체 간의 덧셈(+) 연산을 처리하는 메서드입니다.- 예:
a + b는a.__add__(b)로 변환됩니다.
- 예:
__eq__(self, other): 두 객체가 같은지(==) 비교할 때 호출됩니다.- 예:
a == b는a.__eq__(b)로 변환됩니다.
- 예:
__len__(self): 객체의 길이를 반환할 때 사용됩니다.len()함수를 사용할 때 호출됩니다.- 예:
len(obj)는obj.__len__()을 호출합니다.
- 예:
__getitem__(self, key): 객체에서 특정 항목을 가져올 때 사용하는 메서드입니다. 인덱싱([]) 연산을 지원합니다.- 예:
obj[key]는obj.__getitem__(key)로 호출됩니다.
- 예:
__call__(self, ...): 객체를 함수처럼 호출할 수 있게 해주는 메서드입니다. 객체에 소괄호를 붙여 함수처럼 호출할 때 사용됩니다.- 예:
obj()는obj.__call__()을 호출합니다.
- 예:

특수 메서드를 사용하면 객체가 더 Pythonic하게 동작할 수 있게 만들어, 다른 내장 함수나 연산자들과 자연스럽게 통합됩니다. 이러한 특수 메서드를 적절히 구현하면, 자신이 만든 클래스가 기본 자료형처럼 동작하도록 만들 수 있습니다.
'실버를 위한 코딩 > 파이썬' 카테고리의 다른 글
| [내장 함수] 파이썬 내장 함수 'bytearray' (0) | 2024.10.04 |
|---|---|
| [내장 함수] 파이썬 내장 함수 breakpoint (5) | 2024.10.03 |
| [내장 함수] 파이썬 내장 함수 bool (0) | 2024.10.01 |
| [내장 함수] 파이썬 내장 함수 bin(x) (3) | 2024.09.29 |
| [내장 함수] 파이썬 내장 함수 format() (2) | 2024.09.28 |