안녕하세요! 그레이 해커 월횽입니다. 오늘은 객체지향 프로그래밍(Object-Oriented Programming, OOP)에 대해 알아보겠습니다. 객체지향 프로그래밍은 객체를 중심으로 프로그램을 설계하고 구현하는 방식으로, Python에서도 중요한 개념입니다.
1. 객체지향 프로그래밍이란?
객체지향 프로그래밍(OOP)은 데이터를 객체로 표현하고, 이 객체들이 상호작용하는 방식으로 프로그램을 구성하는 기법입니다. 객체지향 프로그래밍의 핵심 개념은 클래스와 객체입니다.
· 객체(Object): 속성과 메서드를 갖는 데이터 구조
· 클래스(Class): 객체를 만들기 위한 설계도 또는 틀
2. 클래스(Class) 정의
Python에서 클래스는 class 키워드를 사용해 정의합니다. 클래스는 속성(변수)과 메서드(함수)로 이루어져 있으며, 이들을 통해 객체를 생성하고 행동을 정의합니다.
클래스 정의 예시
class Dog:
# 클래스 속성
species = "Canis familiaris"
# 초기화 메서드 (생성자)
def __init__(self, name, age):
self.name = name # 인스턴스 속성
self.age = age
# 메서드
def bark(self):
return f"{self.name}가 짖습니다."
3. 객체 생성
클래스에서 객체(인스턴스)를 생성하려면 클래스 이름을 함수처럼 호출하면 됩니다.
객체 생성 예시
my_dog = Dog("바둑이", 3)
print(my_dog.name) # '바둑이' 출력
print(my_dog.bark()) # '바둑이가 짖습니다.' 출력
4. __init__ 메서드
__init__ 메서드는 객체가 생성될 때 자동으로 호출되는 초기화 메서드로, 객체의 초기 속성을 정의하는 데 사용됩니다. 위 예시에서 self.name과 self.age가 __init__ 메서드에 의해 설정됩니다.
__init__ 메서드 예시
class Cat:
def __init__(self, name, color):
self.name = name
self.color = color
my_cat = Cat("야옹이", "검정색")
print(my_cat.name) # '야옹이' 출력
5. 클래스 속성과 인스턴스 속성
· 클래스 속성: 클래스 자체에 속하는 속성으로, 모든 인스턴스가 공유합니다.
· 인스턴스 속성: 각 객체마다 고유하게 갖는 속성입니다.
클래스 속성 vs 인스턴스 속성
class Car:
wheels = 4 # 클래스 속성
def __init__(self, brand, model):
self.brand = brand # 인스턴스 속성
self.model = model
car1 = Car("Hyundai", "Sonata")
car2 = Car("Kia", "Sorento")
print(car1.wheels) # 4 출력 (클래스 속성)
print(car1.brand) # 'Hyundai' 출력 (인스턴스 속성)
6. 메서드(Method)
클래스 내부에 정의된 함수를 메서드라고 부릅니다. 메서드는 객체의 동작을 정의합니다. 모든 메서드는 첫 번째 매개변수로 self를 받으며, 이는 현재 인스턴스를 가리킵니다.
메서드 예시
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
return f"안녕하세요, 제 이름은 {self.name}이고 나이는 {self.age}살입니다."
person = Person("월횽", 30)
print(person.introduce()) # '안녕하세요, 제 이름은 월횽이고 나이는 30살입니다.' 출력
7. 상속(Inheritance)
상속은 새로운 클래스를 만들 때 기존 클래스를 재사용하는 방법입니다. 부모 클래스의 속성과 메서드를 자식 클래스에서 물려받을 수 있습니다.
상속 예시
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
return f"{self.name}가 소리를 냅니다."
class Dog(Animal): # Animal 클래스를 상속
def speak(self):
return f"{self.name}가 짖습니다."
my_dog = Dog("바둑이")
print(my_dog.speak()) # '바둑이가 짖습니다.' 출력
8. 객체지향 프로그래밍 정리
· 클래스는 객체를 생성하기 위한 설계도
· 객체는 클래스의 인스턴스
· 메서드는 객체의 동작을 정의
· 상속을 통해 기존 클래스를 확장
다음 시간에는 모듈과 패키지에 대해 알아보겠습니다!
- 이전 수업 목록
'프로그래밍 > Python' 카테고리의 다른 글
[Python 강의] 10강 - 라이브러리(Library) (1) | 2024.10.11 |
---|---|
[Python 강의] 9강 - 모듈과 패키지 (1) | 2024.10.10 |
[Python 강의] 7강 - 예외 처리 (Exception Handling) (0) | 2024.10.08 |
[Python 강의] 6강 - 파일 입출력 (0) | 2024.10.07 |
[Python 강의] 5강 - 데이터 구조 (리스트, 튜플, 딕셔너리, 집합) (0) | 2024.10.04 |