파이썬의 핵심 개념 중 하나인 클래스와 객체지향 프로그램밍(OOP)에 대해서 알아보겠습니다. 이 개념들은 파이썬 프로그래밍의 근간이 되는 중요한 주제 입니다.
객체지향 프로그래밍이란?
객체지향 프로그래밍(OOP)은 프로그램을 객체들의 모음으로 구성하는 프로그래밍 패러다임 입니다. 여기서 객체란 데이터(속성)와 그 데이터를 처리하는 메서드(행동)를 하나의 단위로 묶는 것을 말합니다.
OOP의 주요 장점은 다음과 같습니다.
- 코드의 재사용성 향상
- 유지보수 용이성
- 프로그램의 구조화
파이썬 클래스 기초
파이썬에서 클래스는 객체를 생성하기 위한 템플릿 또는 청사진 역할을 합니다. 클래스를 정의하는 기본 구조는 다음과 같습니다.
# 클래스 속성
class ClassName:
# 클래스 속성
class_attribute = value
# 초기화 메서드
def __init__(self, param1, param2):
self, param1 = param1
self, param2 = param2
# 인스턴트 메서드
def method_name(self) :
# 메소드 내용
여기서 '__init__' 메서드는 특별한 메서드로, 객체가 생성될 때 자동으로 호출되어 객체를 초기화 합니다.
객체 생성과 사용
클래스를 정의한 후 우리는 이를 바탕으로 객체(인스턴스)를 생할 수 있습니다.
# 객체 생성
object_name = ClassName(arg1, arg2)
# 객체의 메서드 호출
object_name.method_name()
# 객체의 속성 접근
print(object_name.attribute_name)
상속
OOP의 중요한 특징 중 하나는 상속 입니다. 상속을 통해 기존 클래서의 속성과 메서드를 새로운 클래스에서 재사용 할 수 있습니다.
class ParentClass :
# 부모 클래스 내용
class ChildClass(ParentClass) :
# 자식 클래스 내용
자식 클래스는 부모 클래서의 모든 속성과 메서드를 상속받으며, 필요에 따라 새로운 속성과 메서드를 추가하거나 기존 메서드를 오버라이드 할 수 있습니다.
캡슐화
캡슐화는 데잍와 그 데이터를 처리하는 메서드를 하나로 묶는 것을 의미 합니다. 파이썬에서는 언더스코어를 사용하여 속성이나 메서드의 접근 제어를 할 수 있습니다.
class MyClass :
def __init__(self) :
self._protected_var = 10
self.__private_var = 20
def _protected_method(self) :
pass
def __private_method(self) :
pass
단일 언더스코어('_')는 protected를, 이중 언더스코어('__')는 private를 나타 냅니다.
다형성
다형성은 같은 이름의 메서드가 다른 클래스에서 다르게 동작할 수 있음을 의미합니다. 이는 코드의 유연성을 높이고 재사용성을 향상시킵니다.
class Animal :
def speak(self):
pass
class Dog(Animal) :
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return ("Meow!")

실제 예제
이제 배운 개념들을 활용하여 간단한 예제를 만들어보겠습니다.
class Book:
def __init__(self, title, author, pages):
self.title = title
self.author = author
self.pages = pages
def __str__(self):
return f"{self.title} by {self.author}"
def is_long(self):
return self.pages > 300
# 객체생성
book1 = Book("Python Crash Course", "Eric Matthes", 544)
book2 = Book("Automate the Boring Stuff with Python", "Al Sweigart", 592)
# 객체 메서드 사용
print(book1) # Python Crash Course by Eric Mattes
print(book2.is_long()) # True
이 예제에서 우리는 'Book' 클래스를 정의하고, 두개의 'Book' 객체를 생성했습니다. '__str__' 메서드를 오버라이드하여 객체를 문자열로 표현하는 방법을 저의했고, 'is_long' 메서드를 통해 책의 길이를 판단하는 기능을 추가했습니다.
결론
객체지향 프로그래밍은 파이썬에서 매우 중요한 개념 입니다. 클래스와 객체를 활용하면 복잡한 프로그램을 더 구조화되고 관리하기 쉬운 형태로 만들 수 있습니다. 이 글에서 다룬 기본 개념들을 잘 이해하고 연습한다면, 더 효율적이고 유지보수가 쉬운 코드를 작성 할 수 있을 것 입니다.
'IT > Python' 카테고리의 다른 글
[Python] 파이썬 예외 처리와 디버깅 기법 (0) | 2025.01.10 |
---|---|
[Python] 파이썬 모듈과 패키지 사용법 (0) | 2025.01.09 |
[Python] Python 함수 : 작성부터 활용까지 (0) | 2025.01.09 |
[Python] 파이썬 조건문과 반복문 알아보기 (0) | 2025.01.08 |
[Python] 파이썬 변수와 데이터 타입에 대해서 알아보자! (0) | 2025.01.08 |