◈이책에서다루는내용◈
◆__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모듈의추상기반클래스를알아본다.수정하거나확장할다양한컨테이너와컬렉션의일반적인개념을살펴본다.비슷하게구현하는수(number)개념도살펴본다.
6장,‘콜러블과컨텍스트’에서는contextlib의도구를사용해컨텍스트매니저를생성하는몇가지방법을알아본다.콜러블객체의여러디자인변형도보인다.이과정에서스테이트풀콜러블객체가왜단순한함수보다더유용한지설명한다.
7장,‘컨테이너와컬렉션생성’에서는컨테이너클래스의기초를설명한다.컨테이너와컨테이너가제공하는다양한기능을생성하는여러스페셜메서드도다시살펴본다.
8장,‘수생성’에서는+,-,*,/,//,%,**같은필수산술연산자를다룬다.또한〈,〉,〈=,〉=,==,!=같은비교연산자도알아본다.
9장,‘장식자와믹스인:횡단관심사’에서는간단한함수장식자와인자를갖는함수장식자,클래스장식자,메서드장식자를알아본다.
10장,‘직렬화와저장:JSON,YAML,Pickle,CSV,XML’에서는JSON과YAML,Pickle,CSV,XML과같은다양한데이터표현에특화된라이브러리를사용하는간단한지속성을다룬다.
11장,‘셸브를통한객체저장과추출’에서는shelve(와dbm)같은파이썬모듈로수행하는기초데이터베이스연산을설명한다.
12장,‘SQLite를통한객체저장과추출’에서는SQL과관계형데이터베이스라는보다복잡한주제를다룬다.SQL의특징과객체지향프로그래밍의특징은서로잘맞지않아임피던스불일치(impedancemismatch)문제가발생한다.
13장,‘객체전송과공유’에서는객체전송에쓰이는HTTP프로토콜과JSON,YAML,XML표현을알아본다.
14장,‘설정파일과지속성’에서는설정파일로파이썬애플리케이션을동작시키는다양한방법을알아본다.
15장,‘디자인원칙과패턴’에서는SOLID디자인원칙을살펴본다.몇가지모범사례를따르면유지보수가능한고품질의파이썬소프트웨어를구성할수있다.
16장,‘로깅과경고’에서는모듈logging과warning모듈을사용해감사와디버그정보를생성하는법을알아본다.print()함수보다한단계진화한방법이다.
17장,‘테스트가능한디자인에서는테스트가능한디자인과unittest,doctest의사용법을다룬다.
18장,‘명령줄처리’에서는argparse모듈로옵션과매개변수를파싱하는법을알아본다.또한명령디자인패턴을사용해쉘스크립트를작성하지않고도통합시키고확장시킬수있는프로그램컴포넌트를생성해본다.
19장,‘모듈과패키지디자인’에서는모듈과패키지디자인을다룬다.모듈내에서로연관된클래스와패키지내에서로연관된모듈을살펴본다.
20장,‘품질과설명서’에서는소프트웨어가올바르고적절하게구현됐다는신뢰를구축하기위해디자인을설명하는방법을알아본다.
◈옮긴이의말◈
훌륭한애플리케이션은훌륭한디자인으로부터시작된다.하나의예술작품처럼개발도뼈대를세우고살을붙여가는과정을거친다.개발자가첫번째로해야할일은여러디자인대안을수립하고그중무엇이더나은지평가하는것이다.이단계를생략하면허점투성이에다손대기도어려운결과물이나온다.
이책은강력한파이썬프로그램을개발하는데꼭필요한객체지향디자인패턴을소개한다.파이썬이제공하는다양한객체지향요소를적재적소에활용하도록돕고,디자인대안간성능도비교해본다.어떤문제를해결하느냐에따라올바른디자인의정의도달라지므로문제에적합한디자인을어떻게가려내는지도알려준다.
1부에서는객체지향프로그래밍기법을비롯해스페셜메서드로파이썬내장클래스를활용하는방법을다룬다.초기화,속성,추상기반클래스,컨텍스트,컨테이너,수,장식자등파이썬의기본적인객체지향요소를하나씩설명한다.2부에서는저장소에객체를지속시키는방법을다룬다.JSON,shelve,ORM등으로파일이나데이터베이스에다양한형태의객체를지속시켜본다.3부에서는객체지향방식으로테스트하고디버깅하는방법을소개하고SOLID디자인원칙을살펴본다.
1판과달라진점은크게두가지다.첫째,전반적으로예제가더풍부하고자연스러워실전에활용하기쉬워졌다.둘째,SOLID디자인을소개하는15장‘디자인원칙과패턴’장이새롭게추가됐다.좋은디자인을고르려면항상정해진디자인원칙을고수해야한다는점에서1판을읽었더라도한번쯤들여다볼만하다.
이책은디자인패턴을다루는책도,그렇다고객체지향프로그래밍을다루는책도아니다.그보다활용이나응용,심화와같은단어가어울린다.평범한프로그래머에서탁월한프로그래머로거듭나고싶은열정적인개발자에게좋은디딤돌이돼줄것이다.