본문 바로가기
반응형

분류 전체보기60

Effective Python. 재사용 가능한 @property 메서드에는 디스크립터를 사용하자. "Better Way 29. 게터와 세터 메서드 대신에 일반 속성을 사용하자."에서 소개된 @property의 가장 큰 문제점은 재사용성이다. 다시 말해, @property로 데코레이트하는 메서드를 같은 클래스에 속한 여러 속성에 사용하지 못한다. 또한, 관련 없는 클래스에서도 재사용할 수 없다. 아래의 예시를 보자. 글쓰기(writing)와 수학(math)의 시험 점수를 관리하는 Exam이라는 클래스를 만든다고 해보자. class Exam: def __init__(self): self._writing_grade = 0 self._math_grade = 0 @staticmethod def _check_grade(value): if not (0 2021. 3. 2.
Effective Python. @property, @{property}.setter 사용 보통 자바와 같은 언어에 익숙한 사람이라면, 아래와 같이 getter / setter 함수에 익숙할 것이다. class OldResistor: def __init__(self, ohms): self._ohms = ohms def get_ohms(self): return self._ohms def set_ohms(self, ohms): self._ohms = ohms 이렇게 setter와 getter를 사용하는 것은 다음과 같이 사용할 수 있다. r0 = OldResistor(50e3) r0.set_ohms(10e3) r3.set_ohms(r0.get_ohms() + 5e3) 간단하고, 클래스의 인터페이스를 정의하는데 도움이 되고, 사용법을 검증할 수 있게 하고, 경계를 정의하기 쉽게 해준다. 그러나 파이.. 2021. 3. 2.
Effective Python. 메타클래스와 속성 메타클래스를 이용하면 파이썬의 class 문을 가로채서 클래스가 정의될 때마다 특별한 동작을 제공할 수 있다. 또, 메타클래스 못지 않게 설명하기 어렵지만, 강력한 기능은 속성 접근을 동적으로 사용자화 하는 파이썬의 내장 기능이다. 아래의 챕터들을 통해, 해당 내용들을 설명하고자 한다. Better Way 29. 게터와 세터 메서드 대신에 일반 속성을 사용하자. Better Way 31. 재사용 가능한 @property 메서드에는 디스크립터를 사용하자. Better Way 32. 지연 속성에는 __getattr__, __getattribute__, __setattr__을 사용하자. Better Way 33. 메타클래스로 서브클래스를 검증하자. Better Way 35. 메타클래스로 클래스 속성에 주석을 .. 2021. 3. 2.
객체 지향적 사고, 객체 지향적 프로그래밍 Part 1. 객체 지향적인 프로그래밍을 한다고 했을 때 떠오르는 것들 SOLID Single Responsibility Principle Open Closed Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle GoF Factory Pattern Strategy Pattern Decorator Pattern Visitor Pattern … 구조적(절차지향적) 프로그래밍 vs 객체지향 프로그래밍 이 둘의 가장 큰 차이점은, 객체 지향 프로그래밍에서는 “Shift of responsibility”(책임의 이동) 라는 개념이 적용되었다는 것이다. 그것이 핵심이다. 예를 들어, “모든 학생들에.. 2020. 10. 24.
반응형