반응형
파이썬에서 특수 매서드란?
특수 메서드(또는 매직 메서드, 던더 메서드라고도 불림)는 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 |