복잡한 프로그램을 깔끔하게 구조화하려면? 객체지향 프로그래밍!
객체지향 프로그래밍(OOP)은
✔ 코드 재사용
✔ 유지보수 용이성
✔ 대규모 프로젝트 관리
에 강력한 힘을 발휘하는 프로그래밍 패러다임입니다.
파이썬 클래스와 OOP 기초
1. 클래스(Class)란?
- 객체를 생성하기 위한 **설계도(템플릿)**입니다.
- 속성(변수)과 동작(메서드)을 정의합니다.
2. 객체(Object)란?
- 클래스를 기반으로 생성된 **실제 인스턴스(실체)**입니다.
- 클래스에 정의된 속성과 메서드를 사용할 수 있습니다.
3. 클래스 기본 구조
class 클래스이름:
def __init__(self, 매개변수1, 매개변수2):
self.속성1 = 매개변수1
self.속성2 = 매개변수2
def 메서드이름(self):
실행할 코드
- __init__ 메서드는 생성자로, 객체가 만들어질 때 자동 호출됩니다.
- self는 현재 인스턴스 자신을 가리킵니다.
4. 클래스와 객체 만들기 예시
클래스 정의
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print(f"{self.name}가 짖습니다! 멍멍!")
# 객체 생성
my_dog = Dog("초코", 3)
# 속성 접근
print(my_dog.name) # 초코
print(my_dog.age) # 3
# 메서드 호출
my_dog.bark() # 초코가 짖습니다! 멍멍!
5. 클래스와 인스턴스 변수
- 클래스 변수: 모든 인스턴스가 공유하는 변수
- 인스턴스 변수: 각각의 인스턴스가 가지는 개별 변수
예시
class Cat:
species = "고양이" # 클래스 변수
def __init__(self, name):
self.name = name # 인스턴스 변수
cat1 = Cat("나비")
cat2 = Cat("루비")
print(cat1.species) # 고양이
print(cat2.name) # 루비
6. 상속(Inheritance) 기본
- 부모 클래스의 속성과 메서드를 자식 클래스가 물려받습니다.
- 코드 재사용성이 높아집니다.
예시
class Animal:
def __init__(self, name):
self.name = name
def sound(self):
print("소리를 낸다")
class Dog(Animal):
def sound(self):
print("멍멍!")
puppy = Dog("코코")
puppy.sound() # 멍멍!
7. 캡슐화(Encapsulation)와 접근 제한
- 속성 이름 앞에 _(protected) 또는 __(private)를 붙여 접근을 제한할 수 있습니다.
예시
class Person:
def __init__(self, name):
self.__name = name # private 변수
def get_name(self):
return self.__name
p = Person("철수")
print(p.get_name()) # 철수
# print(p.__name) # 에러 발생
결론 – 클래스를 알면 프로그램이 체계적으로 바뀐다!
객체지향 프로그래밍은 복잡한 코드를 **"구조화"**하고,
현실 세계 모델링을 가능하게 만들어줍니다.
처음에는 어렵게 느껴질 수 있지만,
작은 클래스부터 연습하다 보면 금방 익숙해질 수 있습니다.
'개발 > Python' 카테고리의 다른 글
| 파이썬 모듈과 패키지: 파이썬 코드 재사용과 구조화하기 (0) | 2025.05.02 |
|---|---|
| 파이썬 예외 처리(Try-Except) 제대로 사용하는 방법 (0) | 2025.05.01 |
| 파이썬 함수(function) 만드는 방법과 활용법 쉽게 배우기 (0) | 2025.05.01 |
| 파이썬 반복문(for, while)과 리스트 컴프리헨션 정복하기 (1) | 2025.04.30 |
| 파이썬 조건문(if/elif/else) 제대로 이해하기 (0) | 2025.04.30 |
