이미 소장하고 있다면 판매해 보세요.
|
하편
PART 6 클래스와 객체 지향 프로그래밍_979 CHAPTER 26 객체 지향 프로그래밍: 개요_981 CHAPTER 27 클래스 코딩 기초_999 CHAPTER 28 더 현실적인 예제_1025 CHAPTER 29 클래스 코딩 상세_1079 CHAPTER 30 연산자 오버로딩_1113 CHAPTER 31 클래스를 이용한 설계_1173 CHAPTER 32 클래스 고급 주제_1231 PART 7 예외와 도구_1359 CHAPTER 33 예외 기초_1361 CHAPTER 34 예외 코드 작성_1375 CHAPTER 35 예외 객체_1411 CHAPTER 36 예외 설계_1435 PART 8 고급 주제_1463 CHAPTER 37 유니코드와 바이트 문자열_1465 CHAPTER 38 관리 속성_1533 CHAPTER 39 데코레이터_1595 CHAPTER 40 메타클래스_1701 CHAPTER 41 유용한 주제들_1771 PART 9 부록_1781 APPENDIX A 파이썬 설치와 환경 설정_1783 APPENDIX B 파이썬 3.6 윈도우 런처_1801 APPENDIX C 파이썬 변경 사항 참조_1819 APPENDIX D 실습 문제 해답_1835 |
Mark Lutz
|
사실, 클래스는 세 가지 중요한 특징을 가진다. 기본적인 수준에서는 클래스는 파트 5에서 학습했던 모듈과 매우 유사한 단순한 네임스페이스다. 하지만 모듈과 달리 클래스는 다수의 객체를 생성할 수 있으며, 네임스페이스 상속과 연산자 오버로딩을 지원한다. class문을 통해 이 세 가지 특징에 대해 알아보도록 하자. --- p.999
클래스가 포함한 함수의 범위에 접근할 권한이 있기는 하지만, 클래스 내에 중첩된 코드에 대한 포함 범위로 동작하지는 않는다. 파이썬이 참조된 이름을 찾을 때 포함된 함수는 검색하지만, 포함된 클래스는 절대 검색하지 않는다. 즉 클래스는 지역 범위고 포함된 지역 범위에 접근할 수 있지만, 더 중첩된 코드에 대한 지역 범위로는 동작하지 않는다는 뜻이다. 메서드 함수 내에서 이름에 대한 검색이 메서드를 포함한 클래스를 건너뛰므로 클래스 속성은 반드시 상속을 통한 객체 속성으로 접근해야 한다. --- p.1100 이 장에서 클래스가 가지는 재사용성과 코드 분할의 이점을 최적화시키기 위해 클래스를 사용하고 결합하는 일반적인 방법들에 대하여 알아보았다. 재사용성과 코드 분할은 대체로 특정 프로그래밍 언어와는 독립적인 디자인 이슈로 여겨진다(하지만 파이썬은 이를 구현하기 좀 더 쉽도록 한다). 우리는 위임(객체들을 프록시 클래스에 감싸는 것), 구성 관계(내장 객체를 제어하는 것), 상속(다른 클래스들로부터 행위를 얻기)에 대하여 유사개별 속성, 다중 상속, 바운드 메서드, 팩토리 같은 비전에 가까운 개념과 함께 학습하였다. --- p.1228 파이썬 2.6과 3.0 전에는 예외를 클래스 인스턴스와 문자열 객체로 정의할 수 있었다. 문자열 기반의 예외는 2.5에서 사용 중단 경고를 하기 시작했으며, 2.6과 3.0에서는 제거되어 현재로는 이 책에서 보여 주는 대로 클래스 기반의 예외를 사용해야 한다. 하지만 옛날에 작성된 코드를 이용하여 작업해야 한다면, 여전히 문자열 예외와 마주칠 수 있다. 이는 (파이썬 역사상 이것이 영원할 것으로 여겨졌던) 수년 전에 작성된 책이나 튜토리얼 또는 웹 자료에서도 발견할 수 있을 것이다. --- p.1413 데코레이터는 일부 잠재적 문제점도 가지고 있다. 데코레이터가 래핑(wraing) 로직을 추가할 때 이는 데코레이트된 객체의 타입을 변경할 수 있으며, 호출 또는 인터페이스 프록시로 사용될 때 부가적인 호출을 야기할 수 있다. 하지만 이런 문제는 객체에 래핑 로직을 추가하는 모든 기법에서 동일하게 발생하는 것이다. --- p.1599 왜 우리는 3.X에서 클래스가 tye 클래스의 인스턴스임에 관심을 가져야 하는가? 이는 메타클래스를 코딩할 수 있게 해주기 때문이다. 오늘날에는 타입의 개념이 클래스와 동일하기 때문에 우리는 이를 변경하기 위해 일반적인 객체 지향 기법과 클래스 구문을 이용하여 tye을 서브클래싱할 수 있다. 그리고 클래스는 실제로 tye 클래스의 인스턴스이기 때문에 tye의 변경된 서브클래스로부터 클래스를 생성하는 것은 커스터마이즈된 클래스를 구현할 수 있게 해준다. 자세히 말하자면, 이 모든 것은 3.X와 2.X의 새 형식 클래스에서 모두 자연스럽게 동작한다. --- p.1716 |