
🛠️ 파이썬 완벽 가이드: 객체 초기화 마법사 __init__과 기본값 세팅
클래스로 붕어빵을 구워낼 때, 어떤 붕어빵은 팥을 넣고 어떤 붕어빵은 슈크림을 넣고 싶을 수 있습니다. 객체를 생성하는 바로 그 순간에, 객체 안의 내용물(변수)들을 내 마음대로 꽉꽉 채워 넣게 해주는 기능이 바로 __init__ 메서드(함수)입니다.
📖 1. 핵심 용어 분석
- __init__ (Initialize):
- 파이썬에서 앞뒤로 밑줄 두 개(__)가 붙은 함수는 '특별한 상황에 자동으로 실행되는 마법의 함수'입니다.
- __init__은 붕어빵 틀의 굽기 버튼(())을 누르는 순간 가장 먼저 자동으로 한 번 실행되며 초기 세팅을 담당합니다.
- self:
- "지금 막 구워져 나온 바로 이 붕어빵"을 뜻합니다.
- self.name은 "이 붕어빵의 이름표"라는 뜻이 됩니다. 파이썬 클래스 내부의 함수(메서드)는 항상 첫 번째 자리에 self를 적어주는 것이 절대적인 규칙입니다.
- 기본 매개변수 (Default Parameter) age=18:
- 괄호 안에 age를 받기로 해놓고 =18을 붙여두었습니다.
- 이것은 "주문할 때 나이를 특별히 지정하지 않으면, 무조건 기본으로 18살로 자동 세팅해라!" 라는 뜻입니다. (아무 말 없으면 기본으로 팥을 넣어주는 것과 같습니다.)
💻 2. 코드로 보는 완벽한 흐름
문제가 된 코드를 붕어빵 공장 직원의 시선으로 한 줄씩 해석해 볼까요?
# [1] Person이라는 이름의 사람(붕어빵) 틀을 만듭니다.
class Person:
# [2] 객체가 생성될 때 이름(name)과 나이(age)를 받아 세팅합니다.
# (단, 나이를 안 알려주면 기본값 18을 씁니다.)
def __init__(self, name, age=18):
self.name = name # 이 사람의 이름표에 받은 이름을 적습니다.
self.age = age # 이 사람의 나이표에 받은 나이를 적습니다.
# [3] Person 틀을 작동시켜 p1이라는 사람을 만듭니다!
# 이때 괄호 안에 "Emil"이라는 이름만 던져주었습니다. (나이는 안 줬네요!)
p1 = Person("Emil")
# [4] p1의 나이를 확인해 봅니다.
print(p1.age)
# 출력 결과: 이름만 주고 나이는 안 줬기 때문에,
# 기본값으로 설정된 18이 자동으로 들어가서 출력됩니다!
📝 3. 핵심 한 줄 총정리 요약
"객체를 찍어낼 때 __init__ 함수를 사용하면 속을 내 마음대로 커스텀할 수 있으며, 괄호 안에 변수=값 형태로 적어두면 값을 생략했을 때 작동하는 '든든한 기본 옵션'이 된다!"

⏱️ 파이썬 완벽 가이드: __init__ 함수는 언제 실행될까?
붕어빵 비유로 다시 한번 머릿속에 확실히 각인시켜 드릴게요!
__init__ 함수는 붕어빵 틀의 굽기 버튼(())을 누르는 바로 그 찰나의 순간에 공장 내부에서 자동으로 가장 먼저 실행되는 초기화 장치입니다. 우리가 파이썬에게 "야, 지금 세팅 함수 실행해!" 라고 따로 명령하지 않아도, 파이썬이 알아서 눈치껏 1순위로 실행해 줍니다.
💻 코드로 보는 '자동 실행' 증명하기
정말로 객체를 만들 때 자동으로 실행되는지, __init__ 함수 안에 print()를 넣어서 덫을 놓아보겠습니다.
# [1] 붕어빵 틀을 만듭니다.
class Person:
# 초기화 함수 안에 프린트 문을 넣어두었습니다.
def __init__(self):
print("🎉 붕어빵이 방금 막 구워졌습니다! (초기화 완료)")
# ----------------------------------------------------
print("공장 가동 준비 완료... 아직 붕어빵은 없습니다.")
# [2] 자, 이제 객체(붕어빵)를 '생성'해 봅니다!
p1 = Person()
# p1 = Person() 코드 단 한 줄만 실행했을 뿐인데,
# 화면에는 "🎉 붕어빵이 방금 막 구워졌습니다! (초기화 완료)" 가 자동으로 출력됩니다!
(참고로 보기 중에 있던 '객체를 삭제할 때' 실행되는 함수는 __del__ 이고, '객체를 출력할 때' 실행되는 함수는 __str__ 이라는 별도의 마법 함수들이 파이썬에 존재한답니다. 나중에 더 깊게 배우실 때 만나게 되실 거예요!)
📝 핵심 한 줄 총정리 요약
"클래스 이름 뒤에 괄호 ()를 붙여서 객체를 찍어내는 바로 그 순간! 파이썬은 다른 모든 일보다 먼저 __init__ 함수를 자동으로 1번 실행한다!"
'두두 IT > 파이썬 퀴즈' 카테고리의 다른 글
| [W3S 오답노트] Python Inheritance (0) | 2026.05.06 |
|---|---|
| [W3S 오답노트] Python Self Parameter (0) | 2026.05.06 |
| [W3S 오답노트] Python Classes (0) | 2026.05.06 |
| [W3S 오답노트] Python Virtual Environment (0) | 2026.05.06 |
| [W3S 오답노트] Python String Formatting(.2f, .1%, :,) (0) | 2026.05.06 |