객체지향
- 클래스
- 다형성
- 캡슐화
- 상속
- 추상화
- 메시지 전달
클래스와 인스턴스
- 클래스 : 붕어빵틀
- 인스턴스 : 붕어빵
클래스 안에는 속성(attribute, property)과 메서드가 있다
괄호의 차이:
my_car.color : 속성
my_car.drive() : 메서드
# 자동차 클래스
class Car:
# 클래스에서 속성을 만들면 인스턴스를 만들 필요 없이 사용 가능
color = 'red'
# 자동차 객체가 가질 속성 (모델명, 색상, 현재 속도)
# 더블언더바(던더) # 만들 때 바로 무조건 실행되는 함수
def __init__(self, value):
self.color = value
# 자동차 객체가 가질 동작, 메서드 (전진, 후진, 가속, 감속)
def drive(self):
print("부릉")
my_car1 = Car();
my_car2 = Car();
my_car2.color = 'blue'
print(my_car1.color) # red
print(my_car2.color) # blue
my_car1.drive() # 부릉
my_car = Car();
print(type(my_car)) # <class '__main__.Car'>
my_list = []
print(dir(my_list))
캡슐화 (Encapsulation)
- 객체지향에서는 데이터와 그 데이터를 다루는 메서드들을 하나로 묶어 캡슐화 함
- 캡슐화된 객체는 외부에서 직접적으로 접근할 수 없음
- 메서드를 통해서만 데이터 조작 가능
- 데이터의 보안성과 안정성을 높일 수 있음
- getter / setter를 이용해 안전하게 접근하도록 하는 것이 좋다
상속
- 이미 정의된 클래스에서 속성과 메서드를 물려받아 새로운 클래스를 생성하는 것
- 코드 재사용성을 높일 수 있음
- 계층적 구조를 만들 수 있음
다형성
- 부모 클래스의 메서드를 오버라이딩하여 각 동물 종류에 맞게 재구현
- 동일한 메서드명을 갖는 메서드가 각 클래스에서 다르게 구현되는 것
- 코드의 가독성과 유지보수성을 높여줌
'Python > 수업' 카테고리의 다른 글
itertools, collections (2) | 2023.05.29 |
---|---|
파이썬 대패키지시대_패키지 의존성 관리 (6) | 2023.04.23 |
파이썬의 코루틴 (2) | 2023.04.23 |
프로세스와 스레드 (2) | 2023.04.16 |
타입별 메서드의 종류 (0) | 2023.04.16 |