일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- dplyr
- 생활코딩
- Beyond Linear Neural Networks
- col_names
- Filter
- RNN
- 모각공
- regular expression
- Multi-Layer Perceptron
- group_by( )
- 부스트캠프
- LinearNeuralNetwork
- 역전파알고리즘
- 네이버커넥트
- summarise( )
- r
- JavaScript
- 네이버커넥트재단
- NomadCoder
- 베이즈통계학
- 부스트캠프aitech3기
- 부스트캠프 aitech3기
- Sequential Model
- regex
- 자바스크립트
- mutate( )
- Convolution
- aitech
- convolution 역전파
- 정규표현식
- Today
- Total
clear_uncertainty
네이버 부스트캠프 모각공 캠페인 2일차 - Python Object-Oriented Programming 본문
네이버 부스트캠프 모각공 캠페인 2일차 - Python Object-Oriented Programming
SOidentitiy 2021. 11. 9. 21:48
모든 설명 및 자료의 출처는 네이버 부스트코스의 <[부스트캠프 AI Tech 3기] Pre-Course>입니다.
(https://www.boostcourse.org/onlyboostcampaitech3/joinLectures/329424)
<꼭 알아야하는 파이썬 기초 지식>
Python Object-Oriented Programming
파이썬은 객체지향 프로그래밍 언어 기법입니다.
클래스와 객체 - 객체 지향 언어의 이해 -
Ex) 수강신청 프로그램을 작성하기 위해선 어떻게 해야할까?
1. 수강신청의 시작부터 끝까지 순서대로 작성
2. 수강신청 관련 주체들(교수, 학생, 관리자)의 행동(수강신청, 과목 입력)과 데이터(수강과목, 강의 과목)들을 중심으로 프로그램 작성 후 연결
지금은 2번 방식이 주류이며, 이러한 기법을 객체 지향 프로그램이라 합니다.
Object-Oriented Programming, OOP = 객체지향 프로그래밍(OO)
객체 : 실생활에서 일종의 물건, 속성(Attribute)와 행동(Action)을 가집니다.
OOP는 이러한 객체 개념을 프로그램으로 표현, 속성은 변수(Variable), 행동은 함수(Method)로 표현됩니다
파이썬 역시 객체 지향 프로그램 언어이며, 파이썬의 integer, list 등등 모두 객체입니다.
인공지능 축구 프로그램을 작성한다고 가정하면 객체는 팀, 선수, 심판, 공 모두가 되고
Action : 선수 -공을 차다, 패스하다. / 심판 - 휘슬을 불다, 경고를 주다
Attribute : 선수 - 선수 이름, 포지션, 소속팀 / 팀 - 팀이름, 팀 연고지 , 팀소속 선수 등이 됩니다.
OOP는 설계도에 해당하는 클래스와 실제 구현체인 인스턴스(instance)로 나뉩니다.
Ex) 붕어빵틀(Class) , 붕어빵(instance)
파이썬에서 class 구현하기
변수와 Class 명 함수명 짓는 방법이 존재
-snake_case: 띄어쓰기 부분에 _를 추가 , 뱀처럼 늘여쓰기, 파이썬 함수/변수명에 사용
-CamelCase: 띄어쓰기 부분에 대문자, 낙타의 등 모양, 파이썬 Class명에 사용
Attribute 의 추가는 __init__, self와 함께 사용해야합니다.
__init__ 은 객체 초기화 예약 함수입니다.
(본인은 colab을 사용)
파이썬에서의 __ 의 의미
파이썬에서 __는 특수한 예약 함수나 변수 그리고 함수명 변경(맨글링)으로 사용합니다.
ex) __main__, __add__, __str__, __eq__
method(Action) 추가는 기존함수와 같으나, 반드시 self 를 추가해야만 class 함수로 인정됩니다.
Object 이름 선언과 함께 초기값을 입력합니다. __init__ 함수의 name, position, back_number에
차례대로 "Jinhyen", "MF", 10이 입력됩니다.
Self란 생성된 instance를 말합니다.
예를들어
class SoccerPlayer(object):
def __init__(self, name : str, position: str, back_number: int):
self.name = name
self.position = position
self.back_number = back_number
위처럼 의 클래스를 지정하고
son = SoccerPlayer("son", "FW", 7)
위의 instance를 지정하면 위 클래스에서 self는 son이 됩니다.
따라서 self.name = name을 son.name = name의 코드로 이해할 수 있습니다.
OOP Implementation Example
구현 가능한 OOP 만들기 - 노트북
조건
-Note를 정리하는 프로그램
-사용자는 Note에 뭔가를 적을 수 있다.
-Note에는 Content(=str type)가 있고 내용을 제거(remove)할 수 있다.
-두개의 노트북을 합쳐 하나로 만들 수 있다. (Note + Note = New Note)
-Note는 Notebook에 삽입된다.
-Notebook 은 Note가 삽입 될 때 페이지(Attribute)를 생성하며, 최고 300페이지까지 저장 가능하다.
-300페이지가 넘으면 더이상 노트를 삽입하지 못한다.
OOP characteristics
객체 지향 언어의 특징은 실제 세상을 모델링 한 것입니다.
실제 세상을 잘 모델링하기위해 필요한 것이 있습니다.
Inheritance(상속) , Polymorphism(다형성) , Visibility(가시성)
Inheritance(상속)
부모클래스로 부터 속성과 Method를 물려받은 자식 클래스를 생성하는 것
class Korean 은 부모클래스인 class Person을 상속받습니다.
추가학습 - .format 에 대해
The format() method formats the specified value(s) and insert them inside the string's placeholder.
The placeholder is defined using curly brackets: {}. Read more about the placeholders in the Placeholder section below.
The format() method returns the formatted string.
속성을 추가해 입력할 수 있습니다.
Super은 Self와 비슷하지만 자기자신이 아닌 부모 클래스를 가져온다는 점에서 다릅니다.
Polymorphism(다형성)
- 같은 이름 메소드의 내부 로직을 다르게 작성하는 것 , 상속을 하거나 다르게 쓰일 수 있습니다.
-draw(rectangle) , draw(circle) -> 이처럼, 함수 명은 같은데 안의 인터페이스와 코드에 따라 코드를 다르게 짤 수 있는 것을 다형성이라 말합니다.
-개념적으론 같은 일을 하지만 세부적으론 다르게 구현하는 것입니다.
Dynamic Typing 특성으로 인해 파이썬에서는 같은 부모클래스의 상속에서 주로 일어납니다.
Visibility (가속성)
누구나 객체 안에 모든 변수를 볼 필요가 없기때문에 객체의 정보를 볼 수 있는 레벨을 조절할 필요가 있습니다.
1) 객체를 사용하는 사용자가 임의로 정보 수정
2) 필요 없는 정보에는 접근 할 필요가 없음
Encapsulation
-캡술화 또는 정보 은닉
- Class 를 설계할 때 클래스 간 간섭, 정보공유의 최소화
- 심판 클래스가 축구선수 클래스 가족 정보를 알아야 할 필요는 없음
-캡슐을 던지듯, 인터페이스만 알아서 써야함
Example
-Product 객체를 Inventory 객체에 추가
-Inventory에는 오직 Product 객체만 들어감
-Inventory에 Product 가 몇 개인지 확인이 필요
-Inventory에 Product items는 직접 접근이 불가
↑ Product 외에 다른 형태도 접근 가능 / 이 문제를 해결하기 위해 item 앞에 __를 사용하여 __item으로 변경
__item을 통해 item에 대한 접근 불가능 (Private 변수로 선언 타객체가 접근 못함)
itmes 에 접근을 허용할 수 있는 방법이 있음
@property
def items(self):
return self.__items
위는 외부에서는 접근이 안되지만 내부에서는 접근이 가능하여 반환을 해줄수 있습니다.
decorator(@property) 를 추가한 뒤, my_inventory.items.append는 접근이 되지만,
my_inventory.__items.append는 접근이 안됩니다.
@property의 역할은 내부에 있는 객체를 접근할 수 있게 해줍니다.
보통 반환을 해줄때, 위처럼 그대로 반환을 시켜주기보다 copy를 통하는 방법이 통상적입니다.
decorate
first-class objects
-일등함수 또는 일수객체
-변수나 데이터 구조 모두에 할당이 가능한 객체
-파라메터로 전달이 가능하고 리턴 값으로도 사용
"파이썬의 모든 함수는 일급함수"
내재함수 (Inner function)
함수 안에 또다른 함수, print_msg("Hello, Python")에서 "Hello, Python"이 함수 print_msg의 msg로 들어가며,
함수 print_msg 안의 함수 printer을 통해 print(msg) = print("Hello, Python")이 출력
-closure : inner function 을 return값으로 반환
closure example
출처
'네이버 부스트캠프 - AI Tech 3rd > 꼭 알아야하는 파이썬 기초지식' 카테고리의 다른 글
네이버 부스트캠프 모각공 캠페인 6일차 - Pandas (0) | 2021.11.14 |
---|---|
네이버 부스트캠프 모각공 캠페인 5일차 - Numerical Python - numpy (0) | 2021.11.12 |
네이버 부스트캠프 모각공 4일차 - Python Data Handling (0) | 2021.11.11 |
네이버 부스트캠프 모각공 3일차 - File/Exception/Log Handling (0) | 2021.11.10 |
네이버 부스트캠프 모각공 캠페인 3일차 - Module and Project (0) | 2021.11.10 |