클래스와 객체 (init · self · 속성 · 메서드)
클래스 관련 용어 한눈에 정리
| 용어 | 설명 |
|---|---|
| 클래스 | 제품의 설계도 |
| 객체 | 설계도로 만든 제품 |
| 속성 | 클래스 안의 변수 |
| 메서드 | 클래스 안의 함수 |
| 생성자 | 객체를 만들 때 실행되는 함수 |
| 인스턴스 | 메모리 안에 살아있는 객체 |
클래스란?
정의: 객체를 만들기 위한 설계도. 속성(attribute)과 메서드(method)를 정의합니다.
왜 사용하는가?
- 관련된 데이터와 기능을 하나로 묶을 수 있음
- 코드를 체계적으로 구조화
- 프로그램의 규모가 커져도 관리하기 쉬움
클래스와 객체의 관계
text
클래스: "자동차" 라는 설계도
└─ 속성: 색깔, 속도, 연료
└─ 메서드: 앞으로 가기, 멈추기, 속도 올리기
객체: 설계도로 만들어진 실제 자동차 1대, 2대, 3대...클래스 정의
기본 구조
python
class 클래스이름:
def __init__(self, 매개변수):
# 속성 초기화
self.속성 = 값
def 메서드이름(self):
# 메서드 구현
pass예시: Quiz 클래스
python
class Quiz:
def __init__(self, question, choices, answer):
self.question = question # 문제
self.choices = choices # 선택지 (리스트)
self.answer = answer # 정답 (1~4)
def display(self):
print(self.question)
for i, choice in enumerate(self.choices, 1):
print(f"{i}. {choice}")
def is_correct(self, user_answer):
return user_answer == self.answer
# 객체 생성
q1 = Quiz(
"Python의 정수 자료형은?",
["str", "int", "list", "dict"],
2
)
# 메서드 호출
q1.display() # 문제 출력
print(q1.is_correct(2)) # 출력: True
print(q1.is_correct(1)) # 출력: False__init__ 메서드와 self
__init__ (생성자)
- 객체가 생성될 때 자동으로 호출되는 메서드
- 객체의 초기 상태를 설정
self
- 객체 자신을 나타내는 매개변수
- 객체의 속성과 메서드에 접근할 때 사용
- 반드시 첫 번째 매개변수로 들어가야 함
python
class Student:
def __init__(self, name, age):
self.name = name # 이 객체의 name 속성
self.age = age # 이 객체의 age 속성
def info(self):
print(f"이름: {self.name}, 나이: {self.age}")
s1 = Student("철수", 25)
s1.info() # 출력: 이름: 철수, 나이: 25
s2 = Student("영희", 24)
s2.info() # 출력: 이름: 영희, 나이: 24속성(attribute)과 메서드(method)
- 속성: 객체가 가진 데이터
- 메서드: 객체가 할 수 있는 기능/동작
python
class Car:
def __init__(self, brand, speed):
# 속성
self.brand = brand
self.speed = speed
# 메서드
def accelerate(self):
self.speed += 10
print(f"속도를 높입니다. 현재 속도: {self.speed}")
def brake(self):
self.speed -= 10
print(f"속도를 낮춥니다. 현재 속도: {self.speed}")
def info(self):
print(f"브랜드: {self.brand}, 속도: {self.speed}")
car1 = Car("현대", 50)
car1.info() # 출력: 브랜드: 현대, 속도: 50
car1.accelerate() # 출력: 속도를 높입니다. 현재 속도: 60
car1.brake() # 출력: 속도를 낮춥니다. 현재 속도: 50함수 vs 클래스
| 구분 | 함수 (Function) | 클래스 (Class) |
|---|---|---|
| 정의 | 특정 작업을 수행하는 코드 묶음 | 객체를 만들기 위한 설계도 (틀) |
| 목적 | 반복되는 기능을 묶어서 재사용 | 데이터(속성)와 기능(메서드)을 하나로 묶어 관리 |
| 상태 유지 | 호출이 끝나면 데이터가 사라짐 | 객체마다 독립적인 데이터가 유지됨 |
| 구성 요소 | 명령문(동작) 위주 | 속성(변수) + 메서드(함수) |
정리
| 개념 | 요약 |
|---|---|
| 클래스 | 객체 생성 설계도 → 데이터와 기능을 하나로 |
__init__ | 생성자 메서드 → 객체 초기화 |
self | 객체 자신 참조 → 속성과 메서드 접근 |
참고 자료
참고: 개인 Notion 학습 노트 (입학연수 과정)
