Dev Language/Python

[파이썬_3] #2. Decorator/Underscore/Getter&Setter/Overriding/Overloading/Dispatch

ydin 2021. 11. 25. 12:27
  • 공부한 날짜: 2021.11.25

 

Part 01 

  • Context manager Annotation 
  • @contextlib.contextmanager, __enter__, __exit__
  • 가장 대표적인 with 구문 이해
  • Contextlib 데코레이터 사용
  • 코드가 직관적이고 예외 처리하는데 용이하다는 특징이 있다 
  • 데코레이터(@contextlib.contextmanager) 이용해서 구현

-  with open('~','w') as f: \n  f.write('~') 과 같은 내용인 것같은데 my_file_writer() 구현함으로써 달라지는 부분이 있나 궁금함

 

 

Part 02 

  • Property(1) - Underscore 
  • access modifier(접근 지정자)
  • 다양한 언더스코어 활용
  • 파이썬 접근지정자 설명 

 

  • Use underscore
  • 언더스코어 이용될 때: 1. 값 무시 2. 인터프리터  3. 네이밍(국제화, 자릿수)

 

  • 접근 지정자
  • name : public 
  • _name: protected
  • __name: private
  • 파이썬 -> Public 강제성이 없음, 약속된 규약에 따라 코딩 장려(자유도, 책임감 장려)
  • 타 클래스가 클래스 변수, 인스턴스 변수 값 쓰기 장려 안함 -> Naming Mangling
  • '__'표시가 변수명에 있으면 접근하지 않는 것이 원칙이다 

 

  • Ex2

이렇게 작성하면 private 변수를 건드리는 것도 문제이지만, 가독성이 떨어진다는 문제점이 있다.  

 

  • Ex3 : 변수를 직접 참조하거나 값을 바꾸는 것이 아닌 메소드(Getter,Setter)를 이용하는 것이 더 좋다 

 

 

Part 03 

 

  • Property(2): Getter, Setter
  • @Property

 

  • 프로퍼티(property) 사용장점

1. 파이써닉한 코드

2. 변수제약 설정

3. Getter, Setter 효과 등등(코드 일관성) 

=> 캡슐화, 유효성 검사 기능 추가 용이

=> 대체표현(속성 노출, 내부의 표현 숨기기 가능)

=> 속성의 수명 및 메모리 관리 용이

=> 디버깅 용이(런타임에서 체크가능)

=> Getter, Setter 작동에 대해 설계된 여러 라이브러리(오픈소스) 상호 운용성 증가 

 

  • Ex1

 

 

  • Ex2

 

 

Part 04 : Method Overriding

 

  • 메소드 오버라이딩: 자식 클래스가 부모 클래스의 메소드를 변경하는 것. 같은 기능 사용을 위해 반복 코딩을 하지 않아도 자동 상속되는 것을 의미한다.

 

  • 메소드 오버라이딩 효과

1. 서브(자식) 클래스에서 슈퍼(부모)클래스를 호출 후 사용 

2. 메소드 재정의 후 사용가능

3. 부모클래스의 메소드를 추상화 후 사용가능(구조적 접근)

4. 확장 가능, 다형성(다양한 방식으로 동작)

5. 가독성 증가, 오류가능성 감소, 메소드 이름 절약, 유지보수성 증가 등 

 

 

  • Ex1

 

 

  • Ex2

 

  • Ex3

 

Part 05 : Overloading, Dispatch 

 

 

  • 메소드 오버로딩 효과

1. 동일 메소드 재정의

2. 네이밍 기능 예측

3. 코드 절약, 가독성 향상

4. 메소드 파라미터 기반 호출 방식 

 

 

  • Ex1 
  • 동일 이름 메소드 사용 예제
  • 동적 타입 검사 -> 런타임에 실행(타입 에러가 실행시에 발견) 면접 대비해서 알아두기!!!

 

  • Ex2

 

 

  • Ex3

 

-@dispatch: 오버로딩을 위한 라이브러리이다.