이번 포스팅에서는 파이썬의 클래스, decorate, 패키지와 모듈에 대한 개념을 정리해 보았습니다.
객체
물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중 자신의 속성을 가지고 있고 다른것과 식별 가능한 것
클래스
객체를 정의하는 틀 또는 설계
인스턴스
메모리에 할당된 객체
파이썬의 클래스 선언
class 예약어 - class 이름 - 상속받는 객체명으로 이뤄짐(object는 생략가능)
class Person(object)
파이썬의 클래스는 CamelCase사용
"__"는 특수한 예약 함수나 변수, 함수명 변경(맨글링)으로 사용
파이썬 클래스의 선언 및 객체
이때, pass예약어를 사용하게 되면 아무런 기능을 하지 않는다.
파이썬 클래스의 Magic Method 및 일반 Method 선언 및 사용
Magic Method : Special Method라고도 불리면서 파이썬이 내부적으로 구현된(빌트인)메소드를 구현함
Magic Method 종류
__new__
새로운 인스턴스 생성시 제일 처음으로 실행되는 메소드
__init__
인스턴스가 __new__로 생성된 후, 호출되는 메소드
__add__
더하는 메소드
__doc__
Docstring을 출력하는 메소드
__bool__
Boolean유무를 나타내는 메소드
__mul__
곱하는 메소드
__sub__
빼는 메소드
__le__
작거나 같다
__del__
객체가 없어질 때 호출되는 메소드
__bytes__
객체를 나타내는 byte문자열
__format__
객체를 나타내는 format을 지정하고 싶을 때 사용
__len__
객체의 길이를 반환
__iter__
컨테이너의 iterator를 반환
__reversed__
순서가 반대로 바뀌는 reversed()함수 호출
__contains__
item 인자를 받고, 존재하면 True, 아니면 False
정의되지 않으면 __iter__를 통해 이터레이션을 돌며 확인함
OOP(Object-Oriented Programming)의 속성
상속(Inheritance)
부모클래스로부터 속성과 Method를 물려받은 자식 클래스를 생성하는 것
다형성(Polymorphism)
같은 이름의 메소드의 내부 로직을 다르게 작성함으로써 여러 가지 형태를 지니게 할 수 있다.
-가시성(Visibility)
누구나 객체 안의 보든 변수를 볼 필요가 없음으로 접근 권한을 제어
"__"를 필드 명 앞에 붙혀 Private 변수로 선언 가능
(엄밀하게 말하면 접근이 가능하나 경로를 복잡하게 하여 마치 Private변수처럼 사용하게 함 <인스턴스._클래스명__필드이름 으로 접근>)
"_"를 필드 명 앞에 붙혀 Protected 변수로 선언 가능
decorator를 이용하여서도 private변수에 접근이 가능
함수를 받아 명령을 추가한 뒤 이를 다시 함수의 형태로 반환하는 함수
파이썬 코드의 규모관계
클래스 < 모듈 < 패키지 < 프로젝트
모듈
프로그램 관점에서 작은 프로그램 부분
프로그램 개발시 다수의 모듈로 구분하여 개발
built-in Module : 이미 파이썬에 내장된 모듈
파이선의 모듈 -> .py파일을 의미
import문을 사용하여 모듈을 불러 올 수 있고 이때, __pychach__디렉토리에 pyc파일이 저장됨(pyc파일 : 파이썬 모듈을 쉽게 불러올 수 있도록 파이썬 인터프리터가 먼저 기계어로 번역)
namespace : 모듈을 호출할 때 범위를 정하는 방법을 말한다.
1, Alias 방법
ex) import 모듈명 as alias명칭
2, 모듈에서 특정 함수 또는 클래스 호출
ex) from 모듈명 import 함수 혹은 클래스명
3, 모듈에서 모든 함수 또는 클래스 호출
ex) from 모듈명 import *
4, 패키지를 통한 모듈 호출
ex) from 패키지명 import 모듈명
5, 패키지를 통한 함수 또는 클래스 호출
ex) from 패키지&모듈명(경로 접근) import 함수 혹은 클래스명
6, 패키지를 가져옴
ex) from 경로 import 패키지명
모듈 사용예시
built-in Module 사용 예시
패키지
하나의 대형 프로젝트를 만드는 코드의 묶음
__init__, __main__등의 키워드 파일명이 사용
(__init__ : 사용할 모듈을 가져옴, __main__ : 패키지 실행시킬때 작동하는 main함수에 해당하는 부분을 넣어줌)
__init__파일이 있어야 패키지로 간주하였으나 파이썬 3.3이후부터는 없어도 패키지로 간주
터미널 python명령어로 실행 가능(__main__수행)
터미널 명령어
python3 패키지명
다음과 같이 패키지 구성이 가능(example_package가 최상위 패키지라 설정하고 구현)
example_package의 __init__ 모듈에 사용할 모듈들을 정의
세부 패키지 또한 __init__ 모듈에 사용할 모듈들을 정의
example_package의 __main__ 모듈에 사용할 모듈들을 가져와 사용
virtualenx + pip
conda
Naver BoostCamp AI Tech - edwith 강의
https://m.blog.naver.com/PostView.nhn?blogId=acornedu&logNo=220934409189&proxyReferer=https:%2F%2Fwww.google.com%2F
https://jwprogramming.tistory.com/121
https://tibetsandfox.tistory.com/21
https://zzsza.github.io/development/2020/07/05/python-magic-method/
https://responding.tistory.com/44
https://medium.com/@hckcksrl/python-%EB%8D%B0%EC%BD%94%EB%A0%88%EC%9D%B4%ED%84%B0-decorator-980fe8ca5276
https://wikidocs.net/1418