상세 컨텐츠

본문 제목

Python 17. Special method

파이썬

by 아리벱 2024. 3. 20. 17:45

본문

저희는 앞서 클래스, 메소드, 객체등을 공부하면서 메소드가 어떤건지 알고 있습니다. 여러 메소드들 중 스페셜 메서도 또는 매직 메소드라고 불리는 것들이 있습니다. 오늘은 이 스페셜 메소드에는 어떤 것이 있고 각 특징이 뭔지 알아보도록 하겠습니다.

 

1. 스페셜 메서드

파이썬의 스페셜 메서드 (또는 매직 메서드라고도 불림)는 더블 언더스코어(__)로 시작하고 끝나는 메서드 이름을 갖습니다. 이 메서드들은 특정 구문이나 내장 함수를 사용할 때 파이썬 인터프리터에 의해 자동으로 호출됩니다.

예를 들어, 객체에 대해 + 연산자를 사용하면 해당 객체의 __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

관련글 더보기