SR's Dev-Log

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

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

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

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

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

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

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

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

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

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