“파이썬에서는 클래스가 T.O.P다...”
1. Python은 대표적인 객체 지향 언어 🧠
Python은 사물처럼 생각하고, 그 사물을 코드로 표현하는 객체 지향(Object-Oriented) 언어다.
쉽게 말해,
“현실에 있는 걸 코드로 만들고, 그 안에 정보와 기능을 담는 방식”
예를 들어 알람 시계를 만든다면?
- 시간, 반복 여부는 정보(속성)
- 알람을 울리는 건 기능(동작)
→ 이걸 하나로 묶은 게 바로 클래스!
2. 그냥 코딩 vs 함수 vs 클래스 🧩
알람 설정을 예시로 비교보자 ⏰
✅ 그냥 코딩 (절차형)
print("알람 앱 실행")
print("07:00 설정")
print("반복: 매일")
print("저장")
- 한 번만 쓸 땐 괜찮지만,
- 여러 개의 알람이 필요하면… 복붙 지옥이 펼쳐질 것이다.
✅ 함수 사용
def 알람_설정(시간, 반복):
print("알람 앱 실행")
print(f"{시간} 설정")
print(f"반복: {반복}")
print("저장")
알람_설정("07:00", "매일")
알람_설정("09:30", "없음")
- 반복되는 작업을 깔끔하게 처리 가능
- ‘동작’ 중심
✅ 클래스 사용
class 알람:
def __init__(self, 시간, 반복):
self.시간 = 시간
self.반복 = 반복
def 울리기(self):
print(f"{self.시간} 알람 울림! (반복: {self.반복})")
my_alarm = 알람("07:00", "매일")
my_alarm.울리기()
- 알람 하나하나를 객체(제품)로 만들어 관리
- 정보 + 동작을 묶어둠
- 유지보수, 확장성, 가독성 모두 Good!
3. 클래스의 구성 요소 살펴보기 🔍
이제 클래스가 얼마나 유용한지 알았으니,
어떻게 만드는지 하나씩 보자!
🧩 self란?
def 울리기(self):
print(self.시간)
- self는 "나 자신"이라는 뜻으로,
- 이 객체 안의 속성(정보)에 접근할 때 꼭 필요하다.
예를 들어 self.시간은 → 이 알람 객체의 시간이라는 뜻!
🛠️ __init__()은 왜 있나?
def __init__(self, 시간, 반복):
self.시간 = 시간
self.반복 = 반복
- 클래스에서 객체가 만들어질 때 자동으로 실행되는 '초기화 함수'.
- 클래스 안에 있는 '모든 속성(정보)'들이 __init__() 안에서 정의된다.
- 객체가 태어날 때, 정의된 정보를 갖고 생성된다.
- 덕분에 인스턴스를 만들 때 필요한 정보를 손쉽게 넘겨 줄 수 있다.
예를들어,
- 우리가 알람을 만들 때마다 → 시간과 반복 정보를 넣는다면,
- __init__()안에서 '시간'과 '반복 여부'를 설정해두는 방식으로 처리할 수 있다.
- 그럼 나중에 인스턴스를 만들 때
alarm1 = 알람("07:00", "매일")
- 한 줄로 alarm1 이라는 알람 객체가 생성되고,
- 그 안에 시간과 반복여부가 들어가며, 설정이 쉽게 가능하다!
🧩 클래스 안에 함수를 왜 넣을까?
def 울리기(self):
print(f"{self.시간} 알람이 울립니다!")
- 클래스 안의 함수는 그 객체가 할 수 있는 '행동(기능)'을 정의한 것.
- 이런 함수를 메서드(method)라고 부른다.
예를들어,
알람에서는 시간을 지정하고 '정해진 시간에 울리는' 행동이 필요하다.
이걸 클래스 안에 '울리기'라는 함수로 정의해 넣어두면,
→ alarm1.울리기() 처럼 사용할 수 있다.
즉,
알람 객체가 자기 역할(울리기)을 직접 수행할 수 있도록 기능을 클래스 안에 같이 묵어둔 것이다.
4. 인스턴스 vs 클래스? 뭐가 다르지? 🤔
정리하자면,
용어 | 뜻 | 예시 |
클래스 | 객체를 만드는 설계도 | 알람 (설계도) |
인스턴스 | 클래스를 이용해 만든 실제 물건 | alarm1 = 알람("07:00", "매일") |
객체 | 인스턴스와 같은 말 | alarm1, alarm2 등 |
→ 정리하면: 클래스를 찍어낸 실제 사물이 인스턴스(객체)라고 보면 된다!
5. 모듈이란? 📦
클래스랑은 조금 다른 개념인데, 자주 등장하는 개념이라 같이 설명 해 봄!
- 모듈(module)은 .py 파일 하나를 의미.
- 클래스, 함수 등을 모아놓은 코드 묶음.
# alarm_module.py
class 알람:
...
# 다른 파일에서
from alarm_module import 알람
→ 나만의 알람 클래스를 다른 파일에서도 쉽게 불러와 쓸 수 있!
✅ 개념 요약
개념 | 설명 |
클래스 | 객체를 만드는 설계도 |
인스턴스 | 클래스를 이용해 만든 실제 사물 |
self | “나 자신”, 객체 안의 정보에 접근할 때 사용 |
init | 객체가 처음 만들어질 때 실행되는 초기화 함수 |
클래스 안 함수 | 객체가 할 수 있는 행동 정의 |
모듈 | 함수, 클래스 등을 담은 .py 파일 |
🎁 예시: 할 일(To-Do) 관리 클래스
🧠 목표
- 할 일의 제목, 마감일, 완료 여부 저장
- 할 일을 완료 처리하거나 상태를 출력하는 기능 만들기
💡 코드 예시
class 할일:
def __init__(self, 제목, 마감일):
self.제목 = 제목
self.마감일 = 마감일
self.완료여부 = False
def 완료처리(self):
self.완료여부 = True
print(f"'{self.제목}' 완료!")
def 상태출력(self):
상태 = "완료" if self.완료여부 else "진행 중"
print(f"📌 {self.제목} | 마감: {self.마감일} | 상태: {상태}")
✨ 사용해보기
todo1 = 할일("파이썬 블로그 포스팅", "2025-03-28")
todo2 = 할일("Git 공부하기", "2025-03-30")
todo1.상태출력()
todo1.완료처리()
todo1.상태출력()
todo2.상태출력()
📋 출력 결과
📌 파이썬 블로그 포스팅 | 마감: 2025-03-28 | 상태: 진행 중
'파이썬 블로그 포스팅' 완료!
📌 파이썬 블로그 포스팅 | 마감: 2025-03-28 | 상태: 완료
📌 Git 공부하기 | 마감: 2025-03-30 | 상태: 진행 중
💬 마무리
"함수는 작업자고, 클래스는 제품이다."
우리는 (아마도?) 이미 코딩을 하면서 함수를 잘 쓰고 있을 것이다.
클래스는 정보+기능 을 묶어서 하나의 실체처럼 다루고 싶을 때 정말 강력한 도구다.
클래스까지 자유자재로 잘 다룰 줄 안다면,
우리는 반복되는 코드들을 계속 다시 입력할 필요 없이 깔-끔 하고 효율적인 업무 처리가 가능하다!
'Python' 카테고리의 다른 글
[Python] for loop로 목차 만들기 (0) | 2025.03.12 |
---|