특별 메서드 개요 및 len()

매일 공부(ML)·2022년 10월 28일
0

Fluent Python

목록 보기
3/130

파이썬 데이터 모델

특별 메서드 개요

  • 특별 메서드 개요는 아래의 링크를 참고하는 것이 좋습니다.

http://docs.python.org/3/reference/datamodel.html

피연산자의 순서가 바뀔 경우 (a b 대신 b a 사용) 역순 연산자가 사용되는 반면, 복합 할당은 중위 연산자와 변수 할당을 간략하게 표현한다.(a = a b를 a = b로 표현)


왜 len()은 메서드가 아닐까?

  • 파이썬의 선을 이용한 '실용성이 순수성에 우선한다'였다.

https://www.python.org/doc/humor/#thezen-of一python

  • len(x)는 x가 내장형의 객체일 경우 빨리 실행이 된다.

  • CPython의 내장 객체에 대해서는 메서드를 호출하지 않고 단지 C 언어 구조체의 필드를 읽어올 뿐이다.

  • 컬렉션에 들어 있는 항목 수를 가져오는 연산은 자주 발생하기에 str, list, memoryview등의 다양한 기본형 객체에 효율적으로 작동한다.

즉, len()은 abs()와 마찬가지로 파이썬 데이터 모델에서 특별한 대우를 받으므로 메서드라고 부르지 않는다.

  • 그러나, ㅣen() 특별 메서드 덕분에 여러분이 정의한 객체에서 len() 메서드를 직접 정의할 수 있다.

    • 내장형 객체의 효율성과 언어의 일관성간의 타협점을 어느정도 찾은 것이다.
profile
성장을 도울 아카이빙 블로그

0개의 댓글