매직메서드, 스페셜 메서드

학습 페이지

파이썬 스펙상으로는 스페셜 메서드라고 한다. 쉽게 말해 빌트인 메서드들이다.

💡 공식 문서 https://docs.python.org/3/reference/datamodel.html

공식문서에 한글도 지원하니 꼭 읽어보자.

그런데… 이거 그냥 빌트인 메서드라고 이해하고 넘어가기엔 파이썬만의 큰 특장점인듯 하다. 생각해보면 프레임워크나 라이브러리 수준의 빌트인 메서드들은 많았는데, 언어차원의 빌트인 메서드들이 있었는가? 자바 내장함수, JS내장함수 이런게 있었나…? 자바에서 사용가능한 메서드들은 모두 Object 에 속해있거나, 어떤 유틸 클래스들에 속해있었고, JS도 마찬가지임… 그런데 파이썬의 빌트인 메서드들은 빌트인 모듈이라는 곳에 속해있고, 그냥 파이썬 언어차원에서 제공하는 메서드들인듯 하다. 그리고 예를들어 내부적으로 __len__ 이란 빌트인이 있다면, 이를 각 내장 클래스들이 알아서 len() 이란 이름으로 오버라이딩해놔서… 그냥 개발자는 모두 통일된 len() 으로 길이를 얻어낼 수 있다. 확실히 역사가 긴 다른 언어보다는 더 통일감이 있다..

💡 문서를 더 읽어보니.. len()은 내장 함수(function)이다. 내장 메서드(method)와는 분명히 다르다. 이런 내장 함수들은 모두 C로 작성되어있다. 자바의 navtive method와 유사한 개념인듯.

💡 그리고 위 문서를 읽어보니… 지금 강의에서 가르치는 매직메서드란 용어를 제대로 알고 사용해야할거같다. __xx__ 형태를 갖고 있다고 다 매직메서드, 스페셜 메서드 이렇게 부르는건 아닌듯. 이것도 JS와 유사하게 어떤 어트리뷰트인데, (문서에서도 attribute라고 한다.) 거기서 커스터마이징이 가능한 부분이 있고, 아닌듯? 이건 문서를 더 읽어봐야 할거 같다.

파이썬의 핵심 구조

파이썬을 잘 알기위해선 다음의 개념을 잘 알고 있어야 한다고 한다…

  1. 시퀀스
  2. 이터레이터
  3. 함수
  4. 클래스

파이썬에선 모든 대상이 객체이다.

심지어 기본 데이터 타입인 int, float들도 모두 class이다.