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
'네이버 부스트캠프(naver boostcamp)' 카테고리의 다른 글
[부스트캠프 AI Tech 프리코스] 9강 행렬이 뭐에요? (0) | 2023.08.25 |
---|---|
[부스트캠프 AI Tech 프리코스] 8강 벡터가 뭔가요? (0) | 2023.08.24 |
[부스트캠프 AI Tech 프리코스] 7강 numpy (0) | 2023.08.24 |
[부스트캠프 AI Tech 프리코스 6강] File / Exception / Log Handling (0) | 2023.08.17 |
[부스트캠프 AI Tech 프리코스 5강] Module and Project (0) | 2023.08.16 |