클래스 사용하기

Tasker_Jang·2026년 2월 26일

1. 클래스란?

클래스(Class) 는 객체를 표현하기 위한 문법입니다. 여기서 객체(Object) 란 특정한 개념이나 모양으로 존재하는 것을 말합니다.

예를 들어 현실 세계의 "사람"이라는 개념을 코드로 표현하면, 이름·나이 같은 속성(Attribute) 과 말하기·걷기 같은 메서드(Method) 를 가진 클래스가 됩니다. 이처럼 클래스로 프로그래밍하는 방식을 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 이라고 합니다.

클래스는 현실 세계의 개념뿐 아니라 컴퓨터 안에서만 쓰이는 개념(예: 파일, 소켓, 큐 등)도 표현할 수 있습니다.


2. 클래스 만들기

class 키워드 뒤에 클래스 이름을 쓰고 : 콜론을 붙인 뒤, 들여쓰기해서 메서드를 작성합니다. 클래스 이름은 관례적으로 대문자로 시작합니다.

메서드는 함수 작성 방법과 같으며, 첫 번째 매개변수는 반드시 self 를 지정해야 합니다.

# 클래스 정의
class Person:
    def greet(self):
        print("안녕하세요!")

3. 인스턴스 생성과 메서드 호출

클래스는 개념을 표현만 할 뿐, 실제로 사용하려면 인스턴스(Instance) 를 생성해야 합니다.

# 인스턴스 생성
james = Person()

# 인스턴스를 통해 메서드 호출
james.greet()  # 안녕하세요!

이처럼 인스턴스를 통해 호출하는 메서드를 인스턴스 메서드라고 부릅니다. 메서드는 반드시 클래스가 아닌 인스턴스를 통해 호출합니다.

💡 파이썬에서는 int, str, list 같은 자료형도 모두 클래스입니다. 우리가 이미 클래스를 써오고 있었던 셈입니다.


4. 속성 만들기 — __init__ 메서드

클래스에서 속성을 만들 때는 __init__ 메서드 안에서 self.속성명 = 값 형태로 할당합니다.

__init__ 은 인스턴스를 생성할 때 파이썬이 자동으로 호출하는 초기화 메서드입니다. 이처럼 이름 앞뒤에 밑줄 두 개(__)가 붙은 메서드를 스페셜 메서드(Special Method) 또는 매직 메서드(Magic Method) 라고 부릅니다.

class Person:
    def __init__(self, name, age):  # 인스턴스 생성 시 자동 호출
        self.name = name  # 인스턴스 속성 초기화
        self.age = age

    def greet(self):
        print(f"안녕하세요, 저는 {self.name}이고 {self.age}살입니다.")

# 인스턴스 생성 — __init__의 self 다음 매개변수에 순서대로 전달
james = Person("james", 25)
james.greet()  # 안녕하세요, 저는 james이고 25살입니다.

self인스턴스 자기 자신을 의미합니다. 클래스 내부에서는 self.속성명, 클래스 바깥에서는 인스턴스.속성명으로 접근합니다. 이렇게 인스턴스를 통해 접근하는 속성을 인스턴스 속성이라고 부릅니다.

# 클래스 바깥에서 속성 접근
print(james.name)  # james
print(james.age)   # 25

5. 비공개 속성

속성 이름 앞에 밑줄 두 개(__)를 붙이면 비공개 속성(Private Attribute) 이 됩니다. 클래스 바깥에서 직접 접근할 수 없으며, 클래스 내부 메서드를 통해서만 접근할 수 있습니다.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.__age = age    # 비공개 속성

    def get_age(self):
        return self.__age   # 클래스 내부에서는 접근 가능

james = Person("james", 25)
print(james.get_age())  # 25 — 메서드를 통해 접근

# print(james.__age)    # AttributeError: 직접 접근 불가

정리

지금까지 배운 클래스의 구성 요소를 표로 정리하면 다음과 같습니다.

개념설명예시
클래스객체를 표현하는 틀class Person:
인스턴스클래스를 실제로 사용하는 객체james = Person()
인스턴스 메서드인스턴스를 통해 호출하는 함수james.greet()
인스턴스 속성인스턴스가 가진 데이터self.name
__init__인스턴스 초기화 메서드생성 시 자동 호출
비공개 속성클래스 외부에서 접근 불가self.__age

profile
ML Engineer 🧠 | AI 모델 개발과 최적화 경험을 기록하며 성장하는 개발자 🚀 The light that burns twice as bright burns half as long ✨

0개의 댓글