Python 강좌 : 제 35강 - 매직 메서드 (1)
매직 메서드(Magic Method)
매직 메서드(Magic Method)
는 미리 정의되어 있는 메서드들을 재정의
하여 클래스를 활용할 수 있도록 변경합니다.
내장 함수들이 처리하는 연산을 변경해 사용자 정의 클래스나 함수 등을 효율적으로 사용할 수 있습니다.
Under Score(_)
를 두 번 사용해 매직 메서드를 정의할 수 있습니다.
인스턴스(Instance) 정의
- 결과
- 인스턴스 할당
인스턴스 초기화
076923.github.io
인스턴스 호출
http://076923.github.io
인스턴스 소멸
__new__ : 할당 메서드
새로운 인스턴스를 만들기 위해 가장 먼저 호출되는 메서드입니다.
__new__
에서 인스턴스를 반환하지 않는다면 __init__
은 실행되지 않습니다.
즉, __new__
메서드가 __init__
메서드를 호출합니다.
super().__new__(cls[, ...])
의 형태로 슈퍼 클래스 호출해서 반환합니다.
__new__
는 일반적으로 사용되지 않으며, 불변형(int, str, tuple) 등의 서브 클래스에서 인스턴스 생성을 커스터마이징할 수 있도록 하는 데 사용됩니다.
__init__ : 초기화 메서드
새로운 인스턴스를 만들 때 사용될 인자들을 선언하는 메서드입니다.
할당된 인자들을 선언해서 사용하며, 일반적으로 매개변수를 할당받을 때 동일한 이름에 self
를 추가해 동일한 명칭으로 사용합니다.
__call__ : 호출 메서드
인스턴스가 함수로 호출될 때 실행되는 메서드입니다.
__call__
메서드가 존재하면, 호출 가능한 형식(callable type)이 되며, 함수처럼 사용할 수 있습니다.
__call__
은 인스턴스를 생성한 다음 값을 할당할 수 있습니다.
반대로 __init__
은 인스턴스를 생성할 때 값을 할당할 수 있습니다.
__del__ : 소멸 메서드
인스턴스가 제거될 때 호출되는 메서드입니다.
소멸자라 부르며, del
등을 통해 간접적으로 호출될 수 있습니다.
인스턴스가 삭제되기 전에 호출됩니다. 정확하게는 참조 횟수(reference count)
가 0이 될 때 호출됩니다.
객체가 종료될 때 사용되는 메서드입니다.
인스턴스(Instance) 표현
- 결과
- {‘site’: ‘076923’, ‘link’: ‘076923.github.io’}
Daeheeyun(site = 076923, link = 076923.github.io)
076923.github.io
b’076923.github.io’
__repr__ : 형식적인 문자열 메서드
repr()
을 호출해 형식적인(official)
문자열 표현에 사용됩니다.
가능한 올바른 표현식을 사용하며, 디버깅을 위해 주로 사용합니다.
명확한 정보를 담아 활용하며, 문자열 형식
으로 반환해야합니다.
__str__ : 비형식적인 문자열 메서드
str()
을 호출해 비형식적인(informal)
문자열 표현에 사용됩니다.
repr()
과는 다르게 사용자가 이해하기 쉬운 형태로 표현할 때 사용합니다.
repr
과 str
의 차이점을 numpy 배열로 예를 든다면 다음과 같습니다.
- 결과
- array([1, 2, 3])
[1 2 3]
repr()
을 통해 반환된 문자열은 np.array(repr(arr))
로도 바로 변환해 사용이 가능합니다.
하지만, str()
을 통해 반환된 문자열은 활용할 수 없습니다.
__format__ : 포맷 형식
format()
을 호출해 포맷팅(formatting)
할 때 사용합니다.
포맷팅의 format_spec은 format()
에서 지원하지 않는 사용자 임의의 형식도 생성할 수 있습니다.
예제의 >30
은 우측 정렬, 30 너비 지정입니다.
__bytes__ : 바이트 형식
bytes()
를 호출해 바이트 문자열로 변환할 때 사용합니다.
접두사 b
가 추가되며, 바이트 문자열로 처리됩니다.
댓글 남기기