프로그래밍/Python

[Python 강의] 8강 - 객체지향 프로그래밍 (Object-Oriented Programming)

월횽 2024. 10. 9. 06:30
728x90
반응형
SMALL

안녕하세요! 그레이 해커 월횽입니다. 오늘은 객체지향 프로그래밍(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. 객체 생성

클래스에서 객체(인스턴스)를 생성하려면 클래스 이름을 함수처럼 호출하면 됩니다.

728x90

객체 생성 예시

my_dog = Dog("바둑이", 3)
print(my_dog.name)  # '바둑이' 출력
print(my_dog.bark())  # '바둑이가 짖습니다.' 출력

 

 

 

4. __init__ 메서드

__init__ 메서드는 객체가 생성될 때 자동으로 호출되는 초기화 메서드로, 객체의 초기 속성을 정의하는 데 사용됩니다. 위 예시에서 self.name과 self.age가 __init__ 메서드에 의해 설정됩니다.

SMALL

__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. 객체지향 프로그래밍 정리

· 클래스는 객체를 생성하기 위한 설계도
· 객체는 클래스의 인스턴스
· 메서드는 객체의 동작을 정의
· 상속을 통해 기존 클래스를 확장

 

다음 시간에는 모듈과 패키지에 대해 알아보겠습니다!

 

 

 

 

 

- 이전 수업 목록

 

 

 

 

 

 

728x90
반응형
LIST