저희는 앞서 클래스, 메소드, 객체등을 공부하면서 메소드가 어떤건지 알고 있습니다. 여러 메소드들 중 스페셜 메서도 또는 매직 메소드라고 불리는 것들이 있습니다. 오늘은 이 스페셜 메소드에는 어떤 것이 있고 각 특징이 뭔지 알아보도록 하겠습니다.
파이썬의 스페셜 메서드 (또는 매직 메서드라고도 불림)는 더블 언더스코어(__)로 시작하고 끝나는 메서드 이름을 갖습니다. 이 메서드들은 특정 구문이나 내장 함수를 사용할 때 파이썬 인터프리터에 의해 자동으로 호출됩니다.
예를 들어, 객체에 대해 + 연산자를 사용하면 해당 객체의 __add__ 메서드가 호출됩니다. 또는 len() 함수를 사용하면 __len__ 메서드가 호출됩니다.
1. __init__ : 객체 초기화 메서드
2. __str__ : 객체를 문자열로 표현하는 메서드. print() 함수나 str() 함수를 사용할 때 호출됩니다.
우선 우리가 여태까지 알고 있어 호출했던 str은 내장 함수 __str__ 과는 다르다는 점을 유념해야 합니다.
Book 클래스를 정의하고 book 객체를 만들었습니다.
인스턴스를 출력하였더니 인스턴스가 저장된 메모리를 출력하는 것을 확인 할 수 있습니다. 이때 __str__을 추가해주면 사용자가 이해하기 쉽게 출력됩니다.
__str__은 인스턴스가 print()에 의해 출력될 때 자동 실행됩니다. 따라서 어떠한 인스턴스를 출력할 때에 자동으로 __str__ 의 return값이 출력됩니다.
3. __add__ : + 연산자를 사용할 때 호출되는 메소드
4. __len__ :len() 함수를 사용할 때 호출되는 메소드
__str__를 사용하지 않았기 때문에 인스턴스를 출력한 값이 알아 보기 어렵습니다.
5. __getitem__ :인덱싱을 사용할 때 호출되는 메소드
인덱싱을 사용하여 print를 했기 때문에 getitem의 클래스의 조건식을 거쳐서 값이 출력됩니다.
6. __call__ :객체를 함수처럼 호출할 때 사용되는 메소드
앞에서 배웠던 *args, **kwargs가 등장했습니다.
*args를 통해 여러 개의 인자를 튜플로 출력되고 **kwargs를 통해 딕셔너리 형태로 출력됨을 잘 알고 있습니다.
__call__메소드에 의해 callableObj(10,20,30,40,50, userid = 'apple', age=20,gender='여자')의 출력값이 50까지 튜플 형태로 그 이후는 딕셔너리 형태로 출력된 것을 확인할 수 있습니다.
스페셜 메소드라고 해서 용어만 듣고 __**__이러한 형태만 보고 접했을 때는 이해하기 어렵겠다라고 생각했지만 특정 상황에서 쓰이는 메소드라서 더 이해하기 수월했던 것 같습니다.
Python 20. 파일 입출력 (0) | 2024.03.22 |
---|---|
Python 18. 예외 처리 (0) | 2024.03.21 |
Python 16. 상속 (0) | 2024.03.20 |
Python 15. 객체 지향과 클래스 (0) | 2024.03.20 |
Python 14. 콜백함수와 람다함수 (0) | 2024.03.19 |