파이썬을 객체지향적과
패키지 기능에 대한 기초 개념
https://coding-kindergarten.tistory.com/17
# 파이썬 객체 지향 프로그래밍
- 개요
- 대부분의 도구 들이 객체 지향 기법(OOP)으로 작성됨
- 객체는 속성(init, 매직 메소드)과 행동(def)을 가짐
- 변수와 클래스 이름 규칙
- 파이썬 함수/변수명 : 띄워쓰기 부분에 "_"를 추가
- 클래스 명 : 띄워쓰기 부분에 대문자 사용 / 첫문자 대문자
- Attribute
- "__" 의미 : 특수한 예약 함수 ; __main__, __str__ 등
- __init__ : 객체 초기화 예약 함수
- __str__ , __add__ : 매직 메소드(자동 호출됨, 클래스 기본 속성)의 하나 ; 객체를 표현하는 방식을 정의
- 상속 (Inheritance)
- 정의 : 부모클래스로 부터 속성과 Method를 물려받은 자식 클래스를 생성
- super() : 자기 자신의 부모 클래스의 속성 값을 사용 (+함수 재사용)
- 다형성 (Polymorphism)
- 정의 : 같은 이름 메소드의 내부 로직을 다르게 작성 (상속 or 다르게 사용) -> 같은 이름 - 다른 사용
- 서로 다른 클래스를 정의 할 때 공통 속성을 정의한 클래스를 상속 받음
- 캡슐화 또는 정보 은닉
- 정의 : Class를 설계할떄, 클래스 간 간섭/정보공유의 최소화
- private 내부 변수 정의(__variable) : 외부에서 접근 불가능 ; 객체 추가 및 확인 불가
- @property decorator를 추가해서 내부에서 접근 가능하도록 함. -> 일반적으론 copy 를 통해 사용하도록 처리
- Decorator
- First-class object (일급 객체)
- 함수를 파라미터로 사용 or 함수를 리턴 값으로 사용 가능 객체 : 파이썬 지원
- Inner function(closure) : 함수 내부에 함수 정의 가능 (= 함수 객체를 리턴값으로 사용)
- Decorator function
- 정의 : 함수 본질의 기능을 유지하면서 객체 출력에서의 추가적인 기능을 장식 (기능 추가, 동작 변경)
- @기호를 함수 위에 붙임 : 데코레이터 적용 방법
- @my_decorator를 함수 위에 붙이는 것은 my_function = my_decorator(my_function)
# 모듈과 프로젝트
- 모듈
- 정의 : 프로그램에서의 작은 프로그램 조각 -> 모으면 하나의 큰 프로그램
- 모듈 == py 파일임
- import function_name as alias
- 모듈의 모든 모듈 불러옴 (alias.function) 으로 사용
- 함수의 출처를 표기해주는 것이 좋음 (모든 함수 불러오기 x)
- 패키지
- 패키지 : 모듈을 모아 놓은 단위.
- 각각의 폴더에 필요한 모듈을 구현함. (기능 단위 구분)
- from <폴더이름> import <py파일이름>
- 패키지를 만든다는 것은 큰 문서 작업을 하는 것과 같다.
- 각 폴터 내에 __init__.py 폴터를 생성
- 패키지 임을 알려줌 (python 3.3+ 이후 필수 아님)
- __all__ = ["모듈이름1", "모듈이름2"]. ex)모듈이름.py
- from . import <모듈 이름>
- __pychache__/
- 정의 : 내 폴더를 컴파일 시켜놓은 것 (빠르게 불러오도록)
- 참조
- import : 절대 참조
- from .<폴더> import : 현재 디렉터리 기준 폴더(패키지) 참조
- from ..<폴더> import : 부모 디렉토리 기준 폴더(패키지) 참조