본문 바로가기

추천 검색어

실시간 인기 검색어

객체지향 파이썬 프로그래밍

객체지향 디자인 패턴을 활용한 파이썬 코드 재사용 | 2 판
프로그래밍 언어
스티븐 로트 저자(글) · 심지현 번역
에이콘출판 · 2023년 05월 31일
가장 최근에 출시된 개정판입니다. 구판보기
0.0
10점 중 0점
(0개의 리뷰)
평가된 감성태그가
없습니다
  • 객체지향 파이썬 프로그래밍 대표 이미지
    객체지향 파이썬 프로그래밍 대표 이미지
  • A4
    사이즈 비교
    210x297
    객체지향 파이썬 프로그래밍 사이즈 비교 186x234
    단위 : mm
01 / 02
무료배송 소득공제
10% 40,500 45,000
적립/혜택
2,250P

기본적립

5% 적립 2,250P

추가적립

  • 5만원 이상 구매 시 추가 2,000P
  • 3만원 이상 구매 시, 등급별 2~4% 추가 최대 2,250P
  • 리뷰 작성 시, e교환권 추가 최대 300원
배송안내
무료배송
배송비 안내
국내도서/외국도서
도서 포함 15,000원 이상 구매 시 무료배송
도서+사은품 또는 도서+사은품+교보Only(교보굿즈)

15,000원 미만 시 2,500원 배송비 부과

교보Only(교보배송)
각각 구매하거나 함께 20,000원 이상 구매 시 무료배송

20,000원 미만 시 2,500원 배송비 부과

해외주문 서양도서/해외주문 일본도서(교보배송)
각각 구매하거나 함께 15,000원 이상 구매 시 무료배송

15,000원 미만 시 2,500원 배송비 부과

업체배송 상품(전집, GIFT, 음반/DVD 등)
해당 상품 상세페이지 "배송비" 참고 (업체 별/판매자 별 무료배송 기준 다름)
바로드림 오늘배송
업체에서 별도 배송하여 1Box당 배송비 2,500원 부과

1Box 기준 : 도서 10권

그 외 무료배송 기준
바로드림, eBook 상품을 주문한 경우, 플래티넘/골드/실버회원 무료배송쿠폰 이용하여 주문한 경우, 무료배송 등록 상품을 주문한 경우
주문정보를 불러오는 중입니다.
기본배송지 기준
배송일자 기준 안내
로그인 : 회원정보에 등록된 기본배송지
로그아웃 : '서울시 종로구 종로1' 주소 기준
로그인정확한 배송 안내를 받아보세요!

이달의 꽃과 함께 책을 받아보세요!

1권 구매 시 결제 단계에서 적용 가능합니다.

해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.

북카드

키워드 Pick

키워드 Pick 안내

관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.

파이썬이 제공하는 다양한 객체지향 디자인 패턴을 활용해 강력한 파이썬 프로그램을 개발할 수 있도록 돕는다. 여러 디자인 대안을 소개하고 각 대안의 성능을 비교해보며 현재 해결하려는 문제에 적합한 디자인을 고르는 법을 알려준다. 스페셜 메서드를 통한 파이썬 내장 클래스 활용, 객체 지속성, 객체지향 테스트와 디버깅 같은 고급 파이썬 주제를 풍부하고 일관된 예제로 설명한다.

작가정보

저자(글) 스티븐 로트

(Steven F. Lott)
컴퓨터가 거대하고 값비싸고 귀했던 1970년대에 프로그래밍을 시작했다. 계약직 소프트웨어 개발자이자 설계자로서 크고 작은 수백여 건의 프로젝트에 참여해왔다. 10년 넘게 파이썬을 사용해 비즈니스 문제를 해결 중이다. 팩트출판사에서 『유쾌한 파이썬』(에이콘, 2015), 『Python for Secret Agents II』(2015), 『Python Essentials』(2015), 『Functional Python Programming, 3/e』(2022), 『객체지향 파이썬 프로그래밍』(에이콘, 2017) 등을 출간했다. 현재 미국 동부 해안을 돌아다니며 업계에 머물고 있다.

번역 심지현

이화여대 컴퓨터공학과를 졸업하고, 카이스트KAIST 대학원 전산과에서 데이터베이스 전공으로 석사 학위를 취득했다. DB 외에 온톨로지, 개인화 검색 등을 연구했으며, 졸업 후 네이버에서 검색 서버 설계 및 개발 실무 경험을 쌓다가 현재는 검색 연구실에서 검색 모델링과 추천 시스템 관련 연구 중이다.

작가의 말

이 책은 파이썬 프로그래밍 언어의 여러 고급 기능을 소개하는 책이다. 목표는 최대한 높은 품질의 파이썬 프로그램을 개발하는 것이다. 이렇게 하려면 여러 디자인 대안을 찾아 어떤 디자인이 풀고 있는 문제에 가장 적합하며 성능이 좋은지 알아야 한다.
대부분의 내용은 주어진 디자인의 대안을 살펴보는 일로 구성돼 있다. 어떤 대안은 성능이 더 뛰어나고, 또 어떤 대안은 더 단순하거나 문제 도메인에 더 적합하다. 컴퓨터 프로세싱을 최소화하며 최대한 많은 가치를 내는 가장 좋은 알고리듬과 최선의 데이터 구조를 찾아야 한다. 다시 말해 시간이 곧 돈이고, 시간을 아껴주는 프로그램이 사용자에게 더 많은 가치를 창출한다. 파이썬은 애플리케이션 프로그램이 파이썬의 여러 내부 기능을 바로 사용할 수 있도록 돕는다. 즉, 프로그램을 기존 파이썬 요소와 밀접하게 통합시켜준다. 수많은 파이썬 요소를 활용하면 사용자의 객체지향 디자인과 매끄럽게 통합시킬 수 있다.
다양한 알고리듬과 데이터 구조를 살펴보며 메모리와 성능 대안들을 알아보자. 최종 애플리케이션을 올바르게 최적화하려면 여러 가지 솔루션을 제대로 검토할 수 있는 객체지향 디자인 실력이 필수다. 이 책이 전하고자 하는 가장 중요한 메시지는 어떤 문제든 유일한 정답은 없다는 것이다.
예제에서 최대한 완전한 타입 힌트를 제공하고자 노력했다. 표준 라이브러리가 아닌 외부 패키지를 이용하는 일부 예제는 타입 힌트가 없거나 불완전하다. 타입이 일관되게 쓰였는지 알려면 mypy 도구로 예제를 검사해야 한다.
객체지향 파이썬을 정복하기 위해 긴 시간을 투자해 다양한 소스의 파이썬 코드를 살펴본다. 심지어 파이썬 표준 라이브러리 모듈조차 광범위한 다양성을 지니기 때문에, 예제를 완벽히 일관되게 표현하는 대신 일부러 약간의 불일치를 택했다. 일관성이 부족한 코드를 읽어보는 것도 실제로 다양한 오픈소스 프로젝트의 코드를 읽을 때 도움이 될 것이다.

목차

  • 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__() 메서드
    ____중첩 포맷 명세
    ____컬렉션과 포맷 명세 위임
    ____hash__() 메서드
    ____해시 선택
    ____불변 객체 정의 상속
    ____불변 객체 정의 오버라이딩
    ____가변 객체 정의 오버라이딩
    ____가변 핸드로부터 프로즌 핸드 생성
    ____bool__() 메서드
    ____bytes__() 메서드
    __비교 연산자 메서드
    ____비교 디자인
    ____같은 클래스의 객체 비교 구현
    ____서로 다른 클래스의 객체 비교 구현
    ____하드 점수와 소프트 점수 그리고 다형성
    ____서로 다른 클래스 비교 예제
    ____del__() 메서드
    ____참조 계수와 소멸
    ____순환 참조와 가비지 컬렉션
    ____순환 참조와 weakref 모듈
    ______del__()과 close() 메서드
    ____new__() 메서드와 불변 객체
    ____new__() 메서드와 메타클래스
    ____메타클래스 예제: 클래스단 로거
    __요약


    4장. 속성 접근과 프로퍼티, 디스크립터
    __기술 요구 사항
    __기본 속성 처리
    ____속성과 __init__() 메서드
    __프로퍼티 생성
    ____즉시 계산 프로퍼티
    ____setter와 deleter 프로퍼티
    __스페셜 메서드로 속성 접근
    ______slots__으로 속성명 제한
    ______getattr__()로 동적 속성 생성
    ____NamedTuple의 하위 클래스로서 불변 객체 생성
    ____즉시 계산되는 속성과 dataclasses, __post_init__()
    ______setattr__()로 증분 계산
    ____getattribute__() 메서드
    __디스크립터 생성
    ____비데이터 디스크립터 사용하기
    ____데이터 디스크립터 사용하기
    __속성과 프로퍼티에 타입 힌트 사용
    __dataclasses 모듈 사용하기
    __속성 디자인 패턴
    ____프로퍼티 대 속성
    ____디스크립터로 디자인
    __요약


    5장. 일관된 디자인의 추상 기반 클래스
    __기술 요구 사항
    __추상 기반 클래스
    __기반 클래스와 다형성
    __콜러블
    __컨테이너와 컬렉션
    __수
    __그 밖의 추상화
    ____반복자 추상화
    ____컨텍스트와 컨텍스트 매니저
    __abc와 typing 모듈
    ______subclasshook__() 메서드 사용하기
    ____타입 힌트를 사용하는 추상 클래스
    __요약, 디자인 고려 사항, 트레이드오프
    ____예고


    6장. 콜러블과 컨텍스트
    __기술 요구 사항
    __콜러블 디자인
    __성능 개선
    ____메모이제이션이나 캐싱 사용
    __functools를 사용한 메모이제이션
    ____콜러블 인터페이스로 단순성 추구
    __복잡도와 콜러블 인터페이스
    __컨텍스트 관리와 with문
    ____십진 컨텍스트 사용
    ____그 밖에 컨텍스트
    ____enter__()와 __exit__() 메서드 정의
    ____예외 처리
    __팩토리로서의 컨텍스트 매니저
    ____컨텍스트 매니저 삭제
    __요약
    ____콜러블의 디자인 고려 사항과 트레이드오프
    ____컨텍스트 매니저의 디자인 고려 사항과 트레이드오프
    ____예고


    7장. 컨테이너와 컬렉션 생성
    __기술 요구 사항
    __컬렉션의 추상 기반 클래스
    __스페셜 메서드 예제
    __표준 라이브러리 확장 사용
    ____typing.NamedTuple 클래스
    ____deque 클래스
    ____ChainMap 유스 케이스
    ____OrderedDict 컬렉션
    ____defaultdict 하위 클래스
    ____counter 컬렉션
    __새로운 종류의 컬렉션 생성하기
    __컬렉션 타입 좁히기
    __새로운 종류의 시퀀스 정의하기
    ____통계 리스트
    ____즉시 계산과 지연 계산 선택
    ______getitem__(), __setitem__(), __delitem__(), 슬라이스 다루기
    ______getitem__(), __setitem__(), __delitem__() 구현
    ____리스트 래핑과 위임
    ______iter__()로 반복자 생성
    __새로운 종류의 매핑 생성하기
    __새로운 종류의 집합 생성하기
    ____디자인 원리
    ____Tree 클래스 정의
    ____TreeNode 클래스 정의
    ____이진 트리 백 실험
    __디자인 고려 사항과 트레이드오프
    __요약


    8장. 수 생성
    __기술 요구 사항
    __수의 추상 기반 클래스
    ____사용할 타입 결정
    ____메서드 결정과 반사 연산자
    __산술 연산자의 스페셜 메서드
    __수 클래스 생성
    ____FixedPoint 초기화 정의
    ____FixedPoint 이항 산술 연산자 정의
    ____FixedPoint 단항 산술 연산자 정의
    ____FixedPoint 반사 연산자 구현
    ____FixedPoint 비교 연산자 구현
    __수 해시 계산
    ____더 유용한 반올림 디자인
    __다른 스페셜 메서드 구현
    __제자리 연산자로 최적화
    __요약


    9장. 장식자와 믹스인: 횡단 관심사
    __기술 요구 사항
    __클래스와 그 의미
    ____장식자의 타입 힌트와 속성
    ____함수의 속성
    ____장식된 클래스 구성
    ____클래스 디자인 원칙
    ____관점 지향 프로그래밍
    __내장 장식자 사용
    ____표준 라이브러리 장식자 사용
    __표준 라이브러리 믹스인 클래스 사용
    ____믹스인 클래스로 enum 사용
    __간단한 함수 장식자 작성
    ____별도 로거 생성
    __장식자 매개변수화
    __메서드함수 장식자 생성
    __클래스 장식자 생성
    __클래스에 메서드 추가
    __장식자를 사용한 보안
    __요약


    10장. 직렬화와 저장: JSON, YAML, Pickle, CSV, XML
    __기술 요구 사항
    __지속성과 클래스, 상태, 표현 이해하기
    ____일반적인 파이썬 용어
    __파일시스템과 네트워크 고려 사항
    __지속성을 지원하는 클래스 정의
    ____블로그와 포스트 렌더링
    __JSON 덤프와 로드
    ____JSON 타입 힌트
    ____예제 클래스에서 JSON 지원
    ____JSON 인코딩 커스터마이징
    ____JSON 디코딩 커스터마이징
    ____보안과 eval() 이슈
    ____인코딩 함수 리팩터링
    ____날짜 문자열 표준화
    ____JSON을 파일에 쓰기
    __YAML 덤프와 로드
    ____YAML 데이터 파일에 포매팅하기
    ____YAML 표현 확장
    ____보안과 안전한 로드
    __pickle 덤프와 로드
    ____안정적인 피클 처리를 위한 클래스 디자인
    ____보안과 전역 이슈
    __CSV로 덤프와 로드
    ____간단한 시퀀스를 CSV로 덤프
    ____CSV로부터 간단한 시퀀스 로드
    ____컨테이너와 복잡한 클래스 처리
    ____CSV 파일에 다양한 행 타입 덤프와 로드
    ____반복자로 CSV 행 필터링
    ____CSV 파일에 조인 행 덤프와 로드
    __XML 덤프와 로드
    ____문자열 템플릿을 사용한 객체 덤프
    ____xml.etree.ElementTree로 객체 덤프
    ____XML 문서 로드
    __요약
    ____디자인 고려 사항과 트레이드오프
    ____스키마 진화
    ____예고


    11장. 셸브를 통한 객체 저장과 추출
    __기술 요구 사항
    __객체 지속 유스 케이스 분석
    ____ACID 속성
    __셸브 생성
    __셸브로 표현할 수 있는 객체 디자인
    ____타입 힌트를 갖는 객체 디자인
    ____객체의 키 디자인
    ____객체의 대리 키 생성
    ____단순 키로 클래스 디자인
    ____컨테이너나 컬렉션의 클래스 디자인
    ____외래 키로 객체 참조
    ____복잡한 객체의 CRUD 연산 디자인
    __검색, 스캔, 쿼리
    __셸브의 접근 계층 디자인
    ____데모 스크립트 작성
    __효율성을 높이는 색인 생성
    ____캐시 생성
    __색인 유지 보수 기능 추가
    __라이트백으로 색인 업데이트
    ____스키마 진화
    __요약
    ____디자인 고려 사항과 트레이드오프
    ____애플리케이션 소프트웨어 계층
    ____예고


    12장. SQLite를 통한 객체 저장과 추출
    __기술 요구 사항
    __SQL 데이터베이스, 지속성, 객체
    ____SQL 데이터 모델: 행과 테이블
    ____SQL DML문을 통한 CRUD 처리
    ____SQL SELECT문으로 행 쿼리
    ____SQL 트랜잭션과 ACID 속성
    ____데이터베이스의 기본 키와 외래 키 디자인
    __SQL로 애플리케이션 데이터 처리
    ____순수 SQL로 클래스와 유사한 처리 구현
    __파이썬 객체와 SQLite BLOB 열 매핑
    __파이썬 객체와 데이터베이스 행 수동 매핑
    ____SQLite 접근 계층 디자인
    ____컨테이너 관계 구현
    __색인으로 성능 향상
    __ORM 계층 추가
    ____ORM을 사용한 클래스 디자인
    ____ORM 계층으로 스키마 생성
    ____ORM 계층에서 객체 조작
    __태그로 포스트 쿼리
    __ORM 계층에 색인 정의
    ____스키마 진화
    __요약
    ____디자인 고려 사항과 트레이드오프
    ____매핑 대안
    ____키와 키 디자인
    ____애플리케이션 소프트웨어 계층
    ____예고


    13장. 객체 전송과 공유
    __기술 요구 사항
    __클래스, 상태, 표현
    __HTTP와 REST로 객체 전송
    ____REST를 통한 CRUD 연산 구현
    ____CRUD 이외의 연산 구현
    ____REST 프로토콜과 ACID
    ____JSON, XML, YAML 중 표현 선택
    __Flask로 RESTful 웹 서비스 생성
    ____전송할 문제 도메인 객체
    ____간단한 애플리케이션과 서버 생성
    ____더욱 정교한 라우팅과 응답
    ____REST 클라이언트 구현
    ____RESTful 서비스 데모와 단위 테스트
    __스테이트풀 REST 서비스 다루기
    ____RESTful 객체 식별자 디자인
    ____다중 계층 REST 서비스
    ____플라스크 블루프린트 사용하기
    ____블루프린트 등록
    __안전한 RESTful 서비스 만들기
    ____사용자 비밀번호 해싱
    __웹 애플리케이션 프레임워크로 REST 구현
    __메시지 큐로 객체 전송
    ____프로세스 정의
    ____큐 생성과 데이터 제공
    __요약
    ____디자인 고려 사항과 트레이드오프
    ____스키마 진화
    ____애플리케이션 소프트웨어 계층
    ____예고


    14장 설정 파일과 지속성
    __기술 요구 사항
    __설정 파일 유스 케이스
    __표현과 지속성, 상태, 사용성
    ____애플리케이션 설정 디자인 패턴
    ____객체 생성을 통한 설정
    ____설정 계층 구조 구현
    __INI 파일과 PY 파일에 설정 저장
    __eval() 변형으로 더 많은 리터럴 처리
    __PY 파일에 설정 저장
    ____클래스 정의를 통한 설정
    ____SimpleNamespace를 통한 설정
    ____파이썬 exec()를 사용한 설정
    __exec()을 걱정하지 않아도 되는 이유
    __기본값과 오버라이드에 ChainMap 사용
    __JSON이나 YAML에 설정 저장
    ____중첩이 없는 JSON 설정 사용
    ____YAML 설정 로딩
    __프로퍼티 파일에 설정 저장
    ____프로퍼티 파일 파싱
    ____프로퍼티 파일 사용
    __PLIST 같은 XML 파일 사용
    ____맞춤형 XML 설정 파일
    __요약
    ____디자인 고려 사항과 트레이드오프
    ____공유 설정 생성
    ____스키마 진화
    ____예고


    15장. 디자인 원칙과 패턴
    __기술 요구 사항
    __SOLID 디자인 원칙
    ____인터페이스 분리 원칙
    ____리스코프 치환 원칙
    ____개방 폐쇄 원칙
    ____의존 관계 역전 원칙
    ____단일 책임 원칙
    __SOLID 원칙 디자인 테스트
    __상속과 구성으로 기능 생성
    ____고급 구성 패턴
    __파이썬과 libstdc++ 간 유사성
    __요약


    16장. 로깅과 경고 모듈
    __기술 요구 사항
    __기본 로그 생성
    ____클래스단 로거 생성
    ____로거 설정
    ____로깅 시스템 가동과 중지
    ____로거 명명
    ____로거 레벨 확장
    ____다수의 목적지를 지원하는 핸들러 정의
    ____전파 규칙 관리
    __설정 주의 사항
    __제어와 디버깅, 감사, 보안을 위한 특수 로깅
    ____디버깅 로그 생성
    ____감사와 보안 로그 생성
    __warnings 모듈 사용
    ____경고로 API 변경 알림
    ____경고로 설정 문제 알림
    ____경고로 가능한 소프트웨어 문제 알림
    __고급 로깅: 최근 메시지와 네트워크 목적지
    ____자동 테일 버퍼 생성
    ____원격 프로세스에 로깅 메시지 전송
    ____큐 오버런 방지
    __요약
    ____디자인 고려 사항과 트레이드오프
    ____예고


    17장. 테스트 가능한 디자인
    __기술 요구 사항
    __테스트 단위 정의와 분리
    ____의존 관계 최소화
    ____간단한 단위 테스트 생성
    ____테스트 스위트 생성
    ____에지 케이스와 코너 케이스 넣기
    ____목 객체로 의존 관계 제거
    ____목 객체로 동작 관찰
    __doctest로 테스트 케이스 정의
    ____doctest와 unittest 결합
    ____더욱 완전한 테스트 패키지 생성
    __설정과 해제 사용
    ____OS 자원에 설정과 해제 사용
    ____데이터베이스에 설정과 해제 사용
    __TestCase 클래스 계층 구조
    __외부에서 정의한 예상 결과 사용
    __pytest와 픽스처
    ____어서션 검사
    ____픽스처로 테스트 설정
    ____픽스처로 설정과 해제
    ____매개변수화한 픽스처 생성
    __자동 통합 또는 성능 테스트
    __요약
    ____디자인 고려 사항과 트레이드오프
    ____예고


    18장. 명령줄 처리
    __기술 요구 사항
    __OS 인터페이스와 명령줄
    ____인자와 옵션
    __pathlib 모듈 사용하기
    __argparse로 명령줄 파싱
    ____단순 온오프 옵션
    ____인자가 있는 옵션
    ____위치 인자
    ____그 밖에 인자
    ____-version 표시와 종료
    ____-help 표시와 종료
    __명령줄 옵션과 환경변수 통합
    ____더 설정 가능한 기본값 제공
    ____환경변수로 설정 파일 값 오버라이딩
    ____설정에 None 값 활용
    __도움말 출력 맞춤화
    __최상위 main() 함수 생성
    ____설정의 DRY 원칙
    ____중첩 설정 컨텍스트 관리
    __전체적 프로그래밍
    ____명령 클래스 디자인
    ____분석 명령 하위 클래스 추가
    ____애플리케이션에 기능 추가와 패키징
    ____좀 더 상위의 복합 명령 디자인
    __또 다른 복합 명령 디자인 패턴
    __다른 애플리케이션과의 통합
    __요약
    ____디자인 고려 사항과 트레이드오프
    ____예고


    19장. 모듈과 패키지 디자인
    __기술 요구 사항
    __모듈 디자인
    ____모듈 디자인 패턴
    ____모듈과 클래스 비교
    ____모듈 속 들여다보기
    __전체적 모듈 대 모듈 항목
    __패키지 디자인
    ____모듈-패키지 하이브리드 디자인
    ____여러 대안 구현을 포함하는 패키지 디자인
    ____ImportError 예외 사용하기
    __메인 스크립트와 __main__ 모듈 디자인
    ____실행 가능한 스크립트 파일 생성
    ______main__ 모듈 생성
    ____전체적 프로그래밍
    __장기 실행 애플리케이션 디자인
    __src와 scripts, tests, docs로 코드 조직
    __파이썬 모듈 설치
    __요약
    ____디자인 고려 사항과 트레이드오프
    ____예고


    20장. 품질과 설명서
    __기술 요구 사항
    __help() 함수에 쓰일 문서화 문자열 작성
    __파이독을 사용한 설명서
    __RST 마크업을 통한 출력 개선
    ____텍스트 블록
    ____RST 인라인 마크업
    ____RST 디렉티브
    ____RST 익히기
    __효과적인 문서화 문자열 작성
    __모듈과 패키지를 포함하는 파일단 문서화 문자열 작성
    ____RST 마크업으로 상세 API 작성
    ____클래스와 메서드함수의 문서화 문자열 작성
    ____함수 문서화 문자열 작성
    __더욱 정교한 마크업 기법
    __스핑크스를 사용한 설명서 생성
    ____스핑크스 퀵스타트 사용
    ____스핑크스 설명서 작성
    ____설명서를 위한 4+1 뷰 작성
    ____구현 문서 작성
    ____스핑크스 교차 참조 생성
    ____스핑크스 파일을 디렉터리로 리팩터링
    ____레거시 문서 다루기
    __설명서 작성
    __문학적 프로그래밍
    ____문학적 프로그래밍 유스 케이스
    ____문학적 프로그래밍 도구 다루기
    __요약
    ____디자인 고려 사항과 트레이드오프

출판사 서평

◈ 이 책에서 다루는 내용 ◈

◆ __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의 특징과 객체지향 프로그래밍의 특징은 서로 잘 맞지 않아 임피던스 불일치(impedance mismatch) 문제가 발생한다.
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판을 읽었더라도 한 번쯤 들여다볼 만하다.
이 책은 디자인 패턴을 다루는 책도, 그렇다고 객체지향 프로그래밍을 다루는 책도 아니다. 그보다 활용이나 응용, 심화와 같은 단어가 어울린다. 평범한 프로그래머에서 탁월한 프로그래머로 거듭나고 싶은 열정적인 개발자에게 좋은 디딤돌이 돼 줄 것이다.

기본정보

상품정보 테이블로 ISBN, 발행(출시)일자 , 쪽수, 크기, 총권수, 시리즈명, 원서(번역서)명/저자명을(를) 나타낸 표입니다.
ISBN 9791161757438
발행(출시)일자 2023년 05월 31일
쪽수 864쪽
크기
186 * 234 * 49 mm / 1672 g
총권수 1권
시리즈명
프로그래밍 언어
원서(번역서)명/저자명 Mastering Object-Oriented Python - Second Edition/Steven F. Lott

Klover

구매 후 리뷰 작성 시, e교환권 200원 적립

데이터를 불러오는 중입니다.

문장수집 (0)

문장수집 안내
문장수집은 고객님들이 직접 선정한 책의 좋은 문장을 보여주는 교보문고의 새로운 서비스입니다. 마음을 두드린 문장들을 기록하고 좋은 글귀들은 "좋아요“ 하여 모아보세요. 도서 문장과 무관한 내용 등록 시 별도 통보 없이 삭제될 수 있습니다.
리워드 안내
구매 후 90일 이내에 문장수집 작성 시 e교환권 100원을 적립해드립니다.
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
판매가 5,000원 미만 상품의 경우 리워드 지급 대상에서 제외됩니다. (2024년 9월 30일부터 적용)

구매 후 리뷰 작성 시, e교환권 100원 적립

이 책의 첫 기록을 남겨주세요.

교환/반품/품절 안내

상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

중학 영문법, 문법이 쓰기다: 1학년
이벤트
  • sam x 한샘 [똑똑한sam]
  • 2025 1학기 대학교재전
01 / 02
TOP