1장. 준비, 도구, 기법
__기술 요구 사항
__블랙잭 게임 소개
____게임 시작
____블랙잭 플레이어 전략
____블랙잭 시뮬레이션을 위한 객체 디자인
__파이썬 런타임과 스페셜 메서드
__인터랙션, 스크립팅, 도구
__IDE 고르기
__일관성과 스타일
__타입 힌트와 mypy 프로그램
__성능 - timeit 모듈
__테스트 - unittest와 doctest
__문서화 - sphinx와 RST 마크업
__컴포넌트 설치
__요약
2장. __init__( 메서드
__기술 요구 사항
__암묵적 최상위 클래스 - object
__기반 클래스 객체의 __init__( 메서드
__최상위 클래스의 __init__( 구현
__열거형 상수 생성
__팩토리함수로 __init__( 활용
____결함이 있는 팩토리 디자인과 모호한 else절
____elif 시퀀스를 이용한 단순화와 일관성
____매핑과 클래스 객체를 이용한 단순화
____두 병렬 매핑
____튜플 값에 매핑
____부분함수 방식
____팩토리용 플루언트 API
__각 하위 클래스에서 __init__( 구현
__복합 객체
____컬렉션 클래스 래핑
____컬렉션 클래스 확장
____추가적인 요구 사항과 디자인 대안
__복잡한 복합 객체
____복합 객체 초기화
____init__(이 필요 없는 상태가 없는(stateless 객체
__추가 클래스 정의
__다중 전략 __init__(
____보다 복잡한 초기화
____정적 혹은 클래스단 메서드 초기화
__기타 __init__( 기법
____타입 검사를 포함하는 초기화
____초기화, 캡슐화, 프라이버시
__요약
3장. 매끄러운 통합: 기초 스페셜 메서드
__기술 요구 사항
____repr__(과 __str__( 메서드
____단순 __str__(과 __repr__(
____컬렉션 __str__(과 __repr__(
____format__( 메서드
____중첩
이 책에서 다루는 내용
__init__( 메소드의 다양한 디자인 패턴
플라스크로 RESTful 웹 서비스를 만드는 방법
SOLID 디자인 패턴과 원칙
파이썬 3의 추상 기반 클래스 기능
사용자 애플리케이션의 클래스 생성
PyTest와 픽스처로 테스트 가능한 코드 디자인
with문을 활용한 컨텍스트 매니저의 디자인
표준 라이브러리와 디자인 기법을 사용한 새로운 타입의 컬렉션 생성
새로운 수 타입 개발
이 책의 대상 독자
고급 파이썬을 사용하므로 파이썬 3에 능숙한 독자를 대상으로 한다. 문제 해결을 위해 프로그래밍 언어를 배워야 할 때 유용할 것이다. 이 책은 문법이나 기본적인 개념은 다루지 않는다. 다른 언어에 익숙한 프로그래머라면 파이썬으로 옮길 때 도움이 될 것이다. 파이썬 2 프로그래머가 파이썬 3를 배울 때 특히 유용하다. (버전 2에서 3로 변환하는 도구 등의 변환 유틸리티나 six 모듈 같은 병립(coexistence 라이브러리는 다루지 않는다. 이 책은 온전히 파이썬 3로만 할 수 있는 새로운 개발에 집중한다.
이 책의 구성
1장, ‘준비, 도구, 기법’에서는 unittest와 doctest, docstring 같은 미리 알아야 할 주제와 스페셜 메서드명 몇 가지를 다룬다.
2장, ‘__init__( 메서드’에서는 _init_( 메서드를 자세히 설명하고 구현한다. 단순 객체를 초기화하는 여러 형태를 살펴보고, 컬렉션과 컨테이너를 포함하는 보다 복잡한 객체도 알아본다.
3장, ‘매끄러운 통합: 기초 스페셜 메서드’는 간단한 클래스 정의를 확장해 스페셜 메서드를 추가하는 법을 자세히 설명한다.
4장, ‘속성 접근과 프로퍼티, 디스크립터’는 기본 처리가 어떻게 동작하는지 자세히 살펴본다. 언제 어디서 기본 동작을 오버라이드할지 알아내는 법을 배운다. 또한 디스크립터를 비롯해 파이썬의 내부 동작 방식을 알아본다.
5장, ‘일관된 디자인의 추상 기반 클래스’에서는 collections.abc 모듈의 추상 기