Python

[Python] 그냥 코딩 vs 함수 vs 클래스

Jin_Omics 2025. 3. 28. 15:44

Image created with AI · Curated by JINetic CODE

“파이썬에서는 클래스가 T.O.P다...”

1. Python은 대표적인 객체 지향 언어 🧠

Python은 사물처럼 생각하고, 그 사물을 코드로 표현하는 객체 지향(Object-Oriented) 언어다.

 

쉽게 말해,

“현실에 있는 걸 코드로 만들고, 그 안에 정보와 기능을 담는 방식”

 

예를 들어 알람 시계를 만든다면?

  • 시간, 반복 여부는 정보(속성)
  • 알람을 울리는 건 기능(동작)

→ 이걸 하나로 묶은 게 바로 클래스!


2. 그냥 코딩 vs 함수 vs 클래스 🧩

알람 설정을 예시로 비교보자 ⏰

 

Image created with AI · Curated by JINetic CODE

 


✅ 그냥 코딩 (절차형)

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