Fluent Python1장

Lee DoYeon·2023년 2월 12일
0

Fluent Python

목록 보기
1/1

1.2 특별 메서드는 어떻게 사용되나?

특별 메서드는 파이썬 인터프리터가 호출하기 위한 것이다(?). 즉 인터프리터가 읽을 수 있게 특별 메서드를 사용하는 것이다.
우리는 소스 코드에서 my_object.len()
으로 직접 호출하지 않고, len(my_object) 형태로 호출하게 된다. 만약 my_object가 사용자 정의 클래스의 객체라면 파이썬은 우리가 구현한 len() 객체 메서드를 호출한다.

또한 특별 메서드는 직접 호출하는 경우가 많지 않다. (메타 프로그래밍을 할 때 직접 호출하는 경우가 많다고는 한다.) 특별 메서드는 암묵적으로 호출된다. e.g.) for i in x: → iter(x) → x.iter()

1.2.1 수치형 흉내 내기

특별 메서드는 클래스 내부나, 콘솔의 테스트 코드에서 직접 호출하지 않는 다는 점을 주의해라.

repr() 객체를 문자열로 표현하기 위해 사용.

만약 구현이 안되어있을 경우 → <vector object at 0x——>결과를 볼 수 있음.

즉 클래스 내부에서 인터프리터가 코드를 해석을 못 했다고 볼 수 있음.

한마디로 repr 특별 메서드는 interpreter를 위한것이라 볼 수 있다.

비슷하게

str()도 repr처럼 무언가를 출력하는 특별메서드이다.

하지만 이건 조금 다르다.

repr은 인터프리터를 위한 것이라면 str은 user(reader, developer)를 위한 특별메서드이다.

보면 모두가 둘 중 하나를 사용하려고 한다면 repr 특별 메서드를 추천한다. 이유는 잘 모르겠다.

아마 참조 횟수때문인거 같다.(아닐수도)

1장 마무리

특별 메서드를 왜 사용할까?

아까도 말했다시피 인터프리터가 코드를 이해하는데 도움을 준다고 했다.

하지만 사용자 입장에서 볼 때 특별메서드를 구현한다면, 사용자 정의 객체(클래스)에도

내장형 객체처럼 작동하게 되어, pythonic(파이썬스럽게) 표현력 있는 코딩을 구사할 수 있는 장점이 있다.

profile
I can do this all day

0개의 댓글