객체 지향 프로그래밍 vs 절차 지향 프로그래밍(ex .ipynb;주피터)
객체 지향 프로그래밍은 우선, Class끼리 이래저래 엮어서 진행하는 프로그래밍을 말한다.
그 안에서 객체들끼리 서로 Data를 보내고 받고 이런 과정들이 녹아있어서, 초보자가 이해하기 힘든 프로그래밍일 수도 있다.
이걸 처음에는 "지적 허영심" 이라고 생각했으나, 흐름을 이해하고 보면 가장 깔끔하게 정리된 프로그래밍이기도 하다.
코드를 재사용하거나, 절차 지향 프로그래밍을 통해서 진행하다보면 발생할 수 있는 변수중복이나 이러한 부분에서 훨씬 더 robust한 면이 존재한다.
절차 지향 프로그래밍은 반면에, 순차적으로 흐름을 이해하기 아주 쉽다. 프로젝트의 시작은 절차 지향 프로그래밍을 하고, 점차 확대해가면서(시행착오를 겪으면서) 객체 지향 프로그래밍을 하게 될것이라고 생각한다.
CLASS에 대한 고찰은 이렇게 시작된다. 다른 코드를 보고 이해를 하려고 할때, "아니 얘네는 왜이렇게 어렵게 만들어가지고..." 라고 생각하고 다른 소스코드를 찾아본다. 그런데, 점점 궁금해진다.
"왜 잘하는 애들은 자꾸 클래스 겁나쓰면서 사람 혼란스럽게 할까?"
결론은 그사람이 공유용으로 만들때 겁나 고민하면서 만들어주는 코드다.
말이 길었다. 이제 Class에 대해서 간단하게 알아보자.
그놈의 붕어빵 예시 가져오지말고
dict 라는 type의 객체를 생각해보자.
dict는 {key : value}로 생긴 모든 유형의 파일의 형태를 의미한다.
dict는 "type"중 하나이고 그 type이란건 Class의 종류중 하나다.
dict는 .keys()같은 여러 함수를 가지고 있다.(코드라인 확인하세요)
dict_ex = {1:3}
#################################
type(dict_ex)
#dict
#################################
print(dir(dict))
['__class__',
'__contains__',
'__delattr__',
'__delitem__',
'__dir__',
...
...
...
'items',
'keys',
'values']
dict_ex ={1:3} 으로 정의된 녀석을 우리는 Dict라는걸 안다.
우리는 저렇게 생긴애들은 dict라고 한다.
그리고 dict는 items나 뭐 이런 함수들을 사용할 수 있다. list에는 없다. set에도 없다.
"내클래스" 라는 Class를 만든다고 치자.
예를들어, Data Frame을 받아서 이런저런 전처리를 한다고 치자.
더하고 빼고 곱하고 나누고 제곱하고 별에 별 연산을 할것이다.
근데 우리 아무리 못해도, Train/Test Data로 두번씩 해줘야된다.
변수로 설정해준애들 이름 df_train, df_train_raw, df_d....
아 이걸 두번씩 해줘야되는거다. 그래서, Class를 쓴다.
DataFrame꼴로 들어온 애로 지지고 볶는 과정을 Class 내부에 함수로 만들어서 편의성을 가져간다.
또, Data의 흐름에 대한 정리가 명확하게 된다.
해당 클래스로 진행할 모든 함수를 지정하거나
__init__ 등의 메서드를 이용해서 해당 데이터의 shape을 정할수도 있을것이고
이래저래 직접 작성하는 입장에서 유리한것이다.
자세한 예시를 다시 만들어서 쓸지는 모르겠으나, 어느정도 이해가 되기를 바란다.
'Data 처리 및 기타 programming > Python' 카테고리의 다른 글
| HTML에서 Link만 남기기(22.03.24 1차수정) (0) | 2022.03.17 |
|---|---|
| 빅분기 시험용 족보(?) (0) | 2021.12.03 |