<부스트캠프 AI Tech> 최성철 교수님의 Python 강의를 정리한 내용입니다.
객체 지향 프로그래밍 (OOP, OO)
- 주체들의 행동과 데이터를 중심으로 프로그램 작성 후 연결
- 객체 : 속성(= 변수, Variable)과 행동(=함수, method)을 가짐.
- 객체 지향 프로그래밍에서는 설계도에 해당하는 클래스(class)와 실제 구현체인 인스턴스(instance)가 있음.
Class
+ 변수와 Class명, 함수명은 짓는 방식이 존재함
1) snake_case : 띄어쓰기 부분에 "_" 추가 / Python 함수, 변수명에 사용
2) CamelCase : 띄어쓰기 부분에 대문자 / Python Class 명에 사용
- __는 특수한 예약 함수나 변수, 함수명 변경(Mangling)에 사용
ex. __main__, __str__
- 메서드 선언에 사용되는 self는 생성된 인스턴스 자신을 이야기함.
Inheritance (상속)
: 부모 클래스로부터 속성과 method를 물려 받은 자식 클래스를 생성하는 것
Polymorphism (다형성)
: 같은 이름의 메소드의 내부 로직을 다르게 작성. (같은 이름, 목적에 따라 다른 구현)
class Person:
def __init__(self, name):
self.name = name
def work(self):
print(self.name + 'works hard')
class Engineer(Person):
def work(self):
print(self.name + 'develops something')
Visibility
: 객체의 정보를 볼 수 있는 레벨을 조절하는 것. (누구나 객체 안의 모든 변수를 볼 필요는 없기 때문에!)
+ Encapsulation (캡슐화) : class를 설계할 때, 클래스 간 간섭/정보 공유의 최소화.
ex.
class Inventory(object):
def __init__(self):
self.__items = []
ㄴ items는 Private 변수로, 타객체가 접근하지 못함
ㄴ 접근하게 하는 법? decorator
decorate
+ first-class objects (일등 함수 or 일급 객체)
: 변수나 데이터 구조에 할당이 가능한 객체. 파라미터로 전달 가능하고, return 값으로도 사용할 수 있음. Python의 함수는 일급 함수. (ex. map함수의 파라미터로 함수 전달)
+ inner function
: 함수 내에 또 다른 함수가 존재
- closures : inner function을 return 값으로 반환
def print_msg(msg):
def printer():
print(msg)
return printer
+ decorator
: 복잡한 closure 함수를 간단하게
def star(func):
def inner(*args, **kwargs):
print('*' * 5)
func(*args, **kwargs)
print('*' * 5)
return inner
@star
def printer(msg):
print(msg)
printer('Hi')
#>> *****
#>> Hi
#>> *****
'컴린이 탈출기 > Python' 카테고리의 다른 글
유닛 테스트(Unit Test)의 중요성과 다양한 작성 예시 (feat. Python) 🕵 (2) | 2022.12.09 |
---|---|
[Python] 자료형 - 불변 객체와 가변 객체를 중심으로 (0) | 2021.07.12 |
[Python] Pythonic한 code 짜기 (0) | 2021.04.19 |