Python 객체와 클래스: 객체지향 프로그래밍의 핵심 개념!
Python은 객체지향 프로그래밍(OOP, Object-Oriented Programming)을 지원하는 대표적인 언어예요.
그렇다면 객체와 클래스가 뭐길래 이렇게 중요할까요?
쉽게 말해, 현실 세계의 개념을 코드로 표현하는 방법이에요!
이 글에서는 객체(Object)와 클래스(Class)의 개념을 Python에서 어떻게 활용하는지 정리해볼게요.
다른 주제(기본 문법, 함수, 입출력 등)와 겹치지 않도록 객체지향 프로그래밍의 핵심 개념에 집중할게요. 😊
1. 객체와 클래스란? 왜 필요할까?
🔹 객체(Object)란?
객체는 현실 세계의 모든 것을 프로그래밍적으로 표현한 거예요.
예를 들어, 자동차, 강아지, 책상도 객체가 될 수 있어요.
자동차 = {
"색상": "빨강",
"속도": "100km/h"
}
각각의 자동차 객체는 속성(색상, 속도)과 동작(운전, 정지)을 가질 수 있어요.
이 개념을 Python 코드로 표현하는 것이 바로 클래스(Class)예요!
2. 클래스(Class)란?
클래스는 객체를 만들기 위한 설계도라고 생각하면 돼요.
위에서 만든 자동차 객체를 반복적으로 생성할 수 있도록 클래스를 만들어볼게요.
class Car:
def __init__(self, color, speed):
self.color = color # 속성 (Attribute)
self.speed = speed # 속성 (Attribute)
def drive(self): # 동작 (Method)
print(f"{self.color} 자동차가 {self.speed} 속도로 달립니다!")
# 객체 생성
car1 = Car("빨강", "100km/h")
car2 = Car("파랑", "80km/h")
car1.drive() # 빨강 자동차가 100km/h 속도로 달립니다!
car2.drive() # 파랑 자동차가 80km/h 속도로 달립니다!
💡 클래스를 사용하면 객체를 효율적으로 생성하고 관리할 수 있어요!
3. 클래스의 주요 개념들
🔹 생성자 (__init__
메서드)
클래스를 만들 때 객체를 초기화하는 함수예요.
객체가 생성될 때 자동으로 실행돼요.
class Person:
def __init__(self, name, age):
self.name = name # 속성 설정
self.age = age
p = Person("Alice", 25) # 객체 생성 시 자동 실행
print(p.name) # Alice
print(p.age) # 25
🔹 메서드 (Method)
객체의 동작을 정의하는 함수예요.
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print(f"{self.name}가 멍멍 짖어요!")
dog1 = Dog("바둑이")
dog1.bark() # 바둑이가 멍멍 짖어요!
💡 메서드는 객체가 수행할 행동을 정의해요!
4. 상속(Inheritance): 기존 클래스 확장하기
상속(Inheritance)을 사용하면 기존 클래스를 재사용하면서 새로운 기능을 추가할 수 있어요!
class Animal:
def __init__(self, name):
self.name = name
def sound(self):
print("소리를 냅니다.")
# Animal 클래스를 상속받아 Dog 클래스 생성
class Dog(Animal):
def sound(self): # 메서드 오버라이딩(재정의)
print(f"{self.name}가 멍멍 짖어요!")
dog = Dog("바둑이")
dog.sound() # 바둑이가 멍멍 짖어요!
💡 상속을 사용하면 기존 클래스를 재사용하면서 새로운 기능을 추가할 수 있어요!
5. 캡슐화(Encapsulation)와 정보 은닉
캡슐화(Encapsulation)는 객체의 데이터를 외부에서 직접 접근하지 못하도록 보호하는 개념이에요.
Python에서는 속성 앞에 밑줄(_
)을 붙이면 비공개(private) 속성으로 간주해요.
class BankAccount:
def __init__(self, balance):
self._balance = balance # 보호된 변수 (외부 접근 제한)
def deposit(self, amount):
self._balance += amount
def get_balance(self):
return self._balance
account = BankAccount(1000)
account.deposit(500)
print(account.get_balance()) # 1500
💡 캡슐화를 사용하면 데이터 보호와 보안이 강화돼요!
6. 다형성(Polymorphism): 같은 동작, 다른 실행 방식
다형성(Polymorphism)은 같은 메서드 이름을 사용하지만 클래스마다 다르게 동작하도록 만드는 개념이에요.
class Bird:
def sound(self):
print("짹짹!")
class Dog:
def sound(self):
print("멍멍!")
animals = [Bird(), Dog()]
for animal in animals:
animal.sound() # 각 클래스에 맞게 다르게 실행됨!
출력 결과:
짹짹!
멍멍!
💡 다형성을 사용하면 같은 메서드로 다양한 객체를 다룰 수 있어요!
😊 마무리하며...
Python의 객체와 클래스 개념을 잘 이해하면 객체지향 프로그래밍(OOP)을 효과적으로 활용할 수 있어요.
오늘 배운 개념들을 잘 익혀서 효율적이고 유지보수하기 쉬운 코드를 작성해보세요! 🚀
다음에는 입출력과 데이터 처리에 대해 배워볼까요? 😊