네이버 부스트캠프(naver boostcamp)

[부스트캠프 AI Tech 프리코스 4강] Python Object Oriented Programming

이거시원조랑께 2023. 8. 16. 11:45
반응형

OOP (Object-Oriented Programming) 객체지향 프로그래밍

객체(속성과 행동을 가짐) 개념을 프로그램(속성은 변수, 행동은 함수)으로 표현하는 것

파이썬은 객체 지향 프로그램 언어

클래스는 설계도(붕어빵틀), 실제 구현체는 인스턴스(붕어빵)

 

클래스의 선언

파이썬에서 클래스는 위와 같이 선언한다 () 괄호안 object는 안 넣어도 자동 상속된다

파이썬에서 클래스는 CamelCase로 작성한다 

def __init__ 은 클래스의 속성과 초기 설정을 담당한다

self는 클래스로 만들어질 인스턴스(클래스로 만드는 새로운 변수)를 의미한다

클래스속 함수는 메소드라고 부르며 인스턴스.메소드명() 으로 사용한다

파이썬 클래스에는 __[  ]__ 모양을 하고 있는 특수한 함수들이 여러개 존재하는데 그중 __str__ 함수는 인스턴스를 출력시 출력할 내용을 return 하는 함수이다

 

클래스의 특징

상속(Inheritance)

부모 클래스로부터 속성과 Method를 물려받은 자식 클래스를 생성하는 것

부모 클래스를 괄호에 넣으면 속성과 메소드 사용 가능

 

super()를 사용해서 부모 클래스로 부터 가져올 속성 설정 가능

 

super()를 이용해서 부모 클래스의 함수(속성)도 가져올 수 있음

 

다형성

 

같은 이름의 메소드를 쓰되 내부 로직을 다르게 작성해서 사용하는 것

Cat, Dog 둘다 같은 talk 메소드를 쓰지만 그 결과는 다르게 나타남

 

가시성(Visibilty)

객체의 정보를 볼 수 있는 레벨을 조절하는 것

 

클래스 속성을 외부에서 접근하여 값을 함부로 바꾸는 것을 방지하기 위해 접근 자체를 막는 방법이 존재

위 사진처럼 속성에 __을 붙이면 외부(인스턴스)에서 접근 할 수 없음(내부 로직에서만 사용) 

 

근데 만약 외부에서 items에 대한 직접적인 접근이 필요하다면?

@property (데코레이터라고 부름) 를 사용해서 접근을 막아둔 속성(__가 붙은 것)들을 접근할 수 있도록 해줌

그렇지만 그냥 반환하면 결국 __을 안쓰는 것과 똑같기 때문에 보통은 속성값을 복사해서 카피본을 반환해줌

이런 방식으로 외부에서 속성 값을 변경하는 것을 막으면서도 그 값에 대한 접근은 허용하는 방식을 주로 사용

 

일급함수

함수를 변수로 사용 가능한 경우 일급함수라고 함

파이썬에서는 일급함수를 취급함

 

Inner function

함수 내부에 또 함수가 존재하는 것을 inner function이라고 함

 

closures

이때 내부함수(inner function)을 리턴값으로 반환해주는 경우 클로저라고 부름(자바스크립트에서 자주 등장하는 개념)

 

 

decorator function

복잡한 클로저를 쉽게 사용하기 위해 데코레이터를 사용

 

 


 

근데 나는 여기부터 이해를 못 했음(그냥 클로저가 더 쉬워보이는건 기분탓?)

추후에 다시 보고 아래 코드를 이해해야함

언젠가 위의 3개의 코드를 다 이해하게 되면 좋겠다

 

 

강의보러가기

https://www.boostcourse.org/onlyboostcampaitech6/lecture/1502900?isDesc=false

반응형