Skip to content

클래스와 객체 (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 학습 노트 (입학연수 과정)