객체지향 파이썬을 완전히 정복하겠다는 제목처럼 이 책은 이미 파이썬을 다뤄본 개발자에게 주는 완벽한 파이썬 고급 기능 가이드북이다. 특히 성능과 유지 보수 측면에서 높은 품질의 프로그램을 개발할 수 있도록 상세한 예제를 바탕으로 다양한 디자인 패턴과 고려 사항을 설명한다. 또한 객체지향에 초점을 두는 만큼 파이썬 내부 요소와 사용자 애플리케이션을 통합시켜주는 여러 파이썬 기능을 살펴본다. 블랙잭 시뮬레이션이라는 한 가지 문제를 계속해서 사용하므로 일관성 있고 비교적 쉽게 이해 할 수 있다. 단, 파이썬 3가 제공하는 새로운 기법 위주로 설명하므로, 파이썬 3에 익숙한 프로그래머여야 한다. 이 책은 다음과 같이 크게 세 가지 주제를 다룬다.
첫째, 사용자 애플리케이션에 파이썬의 기능을 통합시킬 수 있는 객체지향 프로그래밍 기법을 소개한다. 즉, 스페셜 메소드를 사용해 파이썬의 내장 기능과 매끄럽게 통합되는 사용자 클래스 정의를 생성한다. 객체 초기화와 거의 모든 클래스 정의에 쓰이는 기초 스페셜 메소드 외에도 스페셜 메소드를 여섯 가지 카테고리로 나눠 설명한다. 속성 접근과 프로퍼티에 쓰이는 스페셜 메소드, 매개변수에 적용할 함수를 구현하는 콜러블, 컬렉션의 기능을 구현하는 스페셜 메소드, 숫자 클래스의 산술 연산자와 비교 연산자를 구현하는 스페셜 메소드, 컨텍스트 매니저를 구현하는 스페셜 메소드, 그리고 반복자를 정의하는 스페셜 메소드다. 이 외에 추상 기반 클래스를 사용하는 방법과 횡단 관점으로서 장식자와 믹스인을 사용하는 방법도 알아본다.
둘째, 객체 지속성과 직렬화 기법을 소개한다. JSON, YAML, Pickle, CSV, XML 같은 형태로 객체를 직렬화하거나 셸브, SQLite 모듈을 사용해 파이썬 객체를 데이터베이스와 매핑해서 객체를 지속시키는 방법을 설명한다. RESTful 웹 서비스로 프로세스 간 파이썬 객체를 전송하는 법도 알아본다. 설정 파일 역시 객체 지속성의 한 형태이므로 설정 파일과 환경 변수, 커맨드 라인 인자를 통합하는 방법도 알아본다. 직렬화와 지속성에도 마찬가지로 객체지향 디자인이 존재한다. 즉, 애플리케이션의 핵심 처리 부와 데이터 표현 기능을 지속성과 분리하는 추상화를 통해 ‘관심사 분리’라는 원리를 적용할 수 있다. 이를 위한 고급 아키텍처 디자인 패턴을 제안한다.
셋째, 객체지향 프로그래밍 외에 소프트웨어의 품질을 향상시키는 추가적인 주제를 살펴본다. unittest와 doctest를 사용한 자동 단위 테스트, logging과 warnings 모듈을 사용한 디버깅, 유지 보수성을 높여주는 설명서 작성법을 소개한다. 뿐만 아니라 통합 가능한 프로그램 컴포넌트를 생성해주는 명령 디자인 패턴을 제안한다. 이러한 도구와 기법 역시 객체지향 파이썬 개발의 매우 중요한 요소다.
위와 같은 파이썬의 고급 기능과 이 책에 나오는 다양하고 상세한 예제를 활용하면 강력한 실 서비스 애플리케이션을 개발할 수 있다. 저자가 강조했듯이 단 하나의 완벽한 솔루션은 존재하지 않는다. 어떻게 활용하느냐와 어떤 부분에 가치를 두느냐에 따라 프로그램의 품질이 좌우된다. 핵심은 기본 원리와 개념을 파악하고 도구의 사용에 익숙해지는 것이다. 마지막 장을 덮었을 때 객체지향 파이썬에 대한 높은 이해와 자신감이 생기길 바란다.