본문 바로가기
반응형

파이썬12

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.
[파이썬/Python] List 형태의 String을 List로. List 형태의 Dict를 Dict로. [List 형태의 String -> List] List 형태의 String s = "{'muffin' : 'lolz', 'foo' : 'kitty'}" List로 변환 import ast ast.literal_eval("{'muffin' : 'lolz', 'foo' : 'kitty'}") [Dict 형태의 String -> Dict] Dict 형태의 String u'[ "A","B","C" , " D"]' Dict로 변환 import ast ast.literal_eval(u'[ "A","B","C" , " D"]') 2020. 5. 21.
반응형