Home
SR's Dev-Log
Cancel

[Better Way #45] 애트리뷰트를 리팩터링하는 대신 @property를 사용하라

본문은 “파이썬 코딩의 기술 (Effective Python, 2판)”의 “Chapter 06. Metaclasses and Attributes”을 읽고 정리한 내용입니다. @property 데코레이터를 통해 지능적인 로직을 수행하는 애트리뷰트를 정의할 수 있다. 이것을 사용하는 흔한 케이스는 간단한 수치 애트리뷰트를 그때그때 요청에 따...

[Better Way #44] 세터와 게터 메서드 대신 평범한 애트리뷰트를 사용하라

본문은 “파이썬 코딩의 기술 (Effective Python, 2판)”의 “Chapter 06. Metaclasses and Attributes”을 읽고 정리한 내용입니다. 파이썬에서는 명시적인 setter나 getter 메서드를 구현할 필요가 없다. 따라서 다음과 같이 항상 단순한 공개 애트리뷰트로부터 구현을 시작하고, 가급적이면 se...

[OOP] 객체지향의 장점과 특징

본문은 “개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴”(최범균 저)을 읽고 정리한 내용입니다. 소프트웨어의 가치는 사용자가 요구하는 기능을 올바르게 제공하는 데에 있다. 하지만 요구사항은 언제나 변하기 때문에 소프트웨어를 변화 가능한, 유연한 구조로 설계하는 것이 중요하다. 그리고 이를 달성하기 위한 핵심 기법 중 하나가 바로 ...

[Better Way #43] 커스텀 컨테이너 타입은 collections.abc를 상속하라

본문은 “파이썬 코딩의 기술 (Effective Python, 2판)”의 “Chapter 05. Classes and Interfaces”을 읽고 정리한 내용입니다. 파이썬 컨테이너 타입을 이용하여 커스텀 컨테이너 타입을 만들고 싶다면 다음의 두 가지 방법 중 하나를 사용한다. 간편하게 사용할 경우에는 파이썬 컨테이너 타입(ex. ...

[Better Way #42] 비공개 애트리뷰트보다는 공개 애트리뷰트를 사용하라

본문은 “파이썬 코딩의 기술 (Effective Python, 2판)”의 “Chapter 05. Classes and Interfaces”을 읽고 정리한 내용입니다. TL;DR 파이썬 컴파일러는 비공개 애트리뷰트를 자식 클래스나 클래스 외부에서 사용하지 못하도록 엄격히 금지하지 않는다. 작성하고 있는 클래스의 하위 클래스를 정의하...

[Better Way #41] 기능을 합성할 때는 믹스인 클래스를 사용하라

본문은 “파이썬 코딩의 기술 (Effective Python, 2판)”의 “Chapter 05. Classes and Interfaces”을 읽고 정리한 내용입니다. TL;DR 믹스인을 합성하면 단순한 동작으로부터 더 복잡한 기능을 만들어낼 수 있다. 인스턴스 애트리뷰트와 __init__을 사용하는 다중 상속은 피해야 한다. 믹...

[Better Way #40] super로 부모 클래스를 초기화하라 (+ MRO)

본문은 “파이썬 코딩의 기술 (Effective Python, 2판)”의 “Chapter 05. Classes and Interfaces”을 읽고 정리한 내용입니다. 자식 클래스에서 부모 클래스를 초기화하는 올바른 방법에 대해 알아보자. 부모 클래스의 __init__ 메서드를 직접 호출할 때의 문제점 부모 클래스를 초기화할 때...

[Better Way #39] 객체를 제너릭하게 구성하려면 @classmethod를 통한 다형성을 활용하라

본문은 “파이썬 코딩의 기술 (Effective Python, 2판)”의 “Chapter 05. Classes and Interfaces”을 읽고 정리한 내용입니다. 파이썬에서는 객체뿐 아니라 클래스도 다형성을 지원한다. 이처럼 클래스의 다형성을 이용하면 같은 인터페이스를 만족하거나 같은 추상 기반 클래스를 공유하는 많은 클래스가 서로 ...

[Better Way #38] 간단한 인터페이스의 경우 클래스 대신 함수를 받아라

본문은 “파이썬 코딩의 기술 (Effective Python, 2판)”의 “Chapter 05. Classes and Interfaces”을 읽고 정리한 내용입니다. 훅 (Hook) 파이썬에서 함수는 first-class citizen으로 취급되므로, 함수나 메서드를 다른 함수에 넘기거나 변수 등으로 참조할 수 있다. ...

[Better Way #37] 내장 타입을 여러 단계로 내포시키기보다는 클래스를 합성하라

본문은 “파이썬 코딩의 기술 (Effective Python, 2판)”의 “Chapter 05. Classes and Interfaces”을 읽고 정리한 내용입니다. 파이썬 내장 딕셔너리 타입을 통해 동적(dynamic)인 내부 상태를 유지할 수 있으나, 내포 단계가 두 단계 이상이 되면 더 이상 딕셔너리, 리스트, 집합, ...