1. variable scope
- 전역변수
지역에서 읽을 수 있음
지역에서의 지역변수와 전역변수의 이름이 같을 때, 전역 변수 선택 시 'global' 키워드 붙여주기 - nonlocal 키워드
(global 객체도 아니고 inner block의 변수도 아니므로) closer의 변수에 접근 시 선언식으로 키워드 사용하기 - locals()
내부필드-메서드(지역전체) 를 dict로 리턴함 - globals()
전역함수/변수를 dict로 리턴
키값에 접근해 값 변경가능
2. Context Manager
원하는 타이밍에 정확하게 리소스를 할당 및 반환 해줌
파일 I/O 시에 전용 클래스로 사용함. with 문과 같이 쓰임
__enter__(self) : with 구문에 진입하는 시점에 자동으로 호출되는 메소드
__exit(self, type, value, traceback) : with구문을 빠져나오기 직전에 호출되는 메소드. close()호출 시 호출됨
type, value, traceback는 with문을 빠져나오기 전에 예외가 발생할 시 정보를 나타냄
3. Context Manager Annotation
데코레이터로 Context Manager 이용 (@contextlib.contextmanager)
직관적인 코딩, 에러처리 쉬움
with문에서 사용.
4. Property
- Underscore
인터프리터
값 무시(unpacking시 분배할 필요없는 요소에 걸어줌)
네이밍
access modifier(접근지정자) -> naming mangling (개발자들간의 원칙. 강제성은 없음)
_변수 : protected
__변수 : private
5. Getter, Setter
변수에 직접 접근 후 수정시 일관성 가독성 하락
=> @Property사용.
@변수.setter
@변수.deleter
캡슐화, 유효성검사 등 가능.
내부숨기기 가능.
속성의 수명 및 메모리 관리 용이
6. Method Overriding
서브클래스에서 부모를 호출 후 사용 -> 상속 -> 인스턴스 생성후 적용됨
메소드를 재정의한 후 사용가능
부모클래스의 메소드 추상화 후 사용가능 (구조적 접근)
다형성, 가독성
7. Method Overloading
메소드 파라미터 기반 동작 방식 (multiple dispatch: 오버로딩 지원. 어노테이션 사용)
동일 메서드 재정의. 네이밍 기능 예측
코드 절약 가능. 가독성 향상
메소드 파라미터 기반 호출 방식
동적 타입 검사 : 런타임에 실행 (타입 에러가 실행시에 발견됨)
@dispatch(int, int)로 사용되는 인자를 알 수 있음
'Python' 카테고리의 다른 글
[ Python : 동시성과 병렬성 문법 배우기 ] 1. Multithreading (0) | 2021.08.01 |
---|---|
[Python 고급] 2. Meta class (0) | 2021.08.01 |
[Python 중급] 2. 파이썬 병행성 (0) | 2021.07.31 |
[Python 중급] 1. 파이썬 클래스, 시퀸스, 일급함수 (0) | 2021.07.31 |
[Python 기초] 리스트 축약 표현 (0) | 2021.07.30 |