본문 바로가기
반응형

metaclass6

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.
반응형