OOP: Object-Oriented Programming
객체지향 프로그래밍이란 무엇인가? 어떤 개념을 알기 위한 좋은 방법 중 하나는 그와 대비되는 개념과의 비교이다.
함수형 프로그래밍
x = [3, 1, 2]
sorted_x = sorted(x) # 정렬이라는 동작은 함수가 담당데이터 x와 동작 sorted는 분리되어 있다.
객체지향 프로그래밍
x = [3, 1, 2]
x.sort() # 리스트 객체 x가 "스스로 정렬"함데이터 x와 동작 sort가 결합되어 있다.
예시 OOP로 자동차 만들기
class Car:
def __init__(self, color):
self.color = color
self.speed = 0
def drive(self):
self.speed += 10
print(f"Driving at {self.speed} km/h")
my_car = Car("red")
my_car.drive() # Car 객체가 "스스로" 달림결론
- OOP 스타일은 “데이터와 동작을 객체로 묶는 방식” 을 말함
- .method() 같은 표현은 *OOP 스타일의 전형적인 표현
- Python은 OOP 언어이기 때문에, 이런 식의 코딩을 권장함
조금 더 딥하게 들어가보면, 객체.메소드() → 클래스.메소드(객체) 이다. 즉, 객체지향의 핵심은 객체가 직접 메소드를 수행하는 게 아니라, 객체에 대한 메소드를 클래스를 통해 호출하는 것을 말한다.
객체지향의 핵심 개념: 객체, 다형성, 캡슐화