본문 바로가기
Dev/Python

파이썬 기초: 클래스(Class)와 객체(Object)의 이해

by DevGyu0511 2026. 1. 3.
반응형

개요

함수가 특정 기능을 수행하는 코드의 묶음이라면, 클래스는 데이터와 그 데이터를 처리하는 함수를 하나로 묶어 관리하는 설계도다.

1. 클래스의 정의와 인스턴스화

클래스는 객체를 만들기 위한 틀이다. 붕어빵 틀(클래스)에서 만들어진 붕어빵(객체)에 비유할 수 있다.

클래스 선언 및 객체 생성

# 클래스 정의
class Smartphone:
    def __init__(self, model, color):
        self.model = model  # 속성(Attribute)
        self.color = color

# 객체(인스턴스) 생성
my_phone = Smartphone("iPhone 15", "Blue")
print(my_phone.model)  # 출력: iPhone 15

2. 생성자 함수 (init)

객체가 생성될 때 자동으로 호출되는 특수 함수를 생성자라고 한다. 객체의 초기 상태를 설정하는 역할을 수행한다.

self의 역할
self는 클래스 내부에서 '현재 생성된 객체 자신'을 가리키는 변수다. 이를 통해 객체마다 서로 다른 속성값을 유지할 수 있다.

3. 클래스 내부의 함수(Method)

클래스 안에서 정의된 함수를 메서드라고 부른다. 해당 객체가 수행할 수 있는 동작을 정의한다.

class Smartphone:
    def __init__(self, model):
        self.model = model
        self.power = False

    def toggle_power(self):
        # 현재 전원 상태를 반전시킴
        self.power = not self.power

        # 기존에 배운 if-else 문을 활용한 상태 판별
        if self.power:
            status = "켜짐"
        else:
            status = "꺼짐"

        print(f"{self.model}의 전원이 {status} 상태입니다.")

my_phone = Smartphone("Galaxy S24")
my_phone.toggle_power()  # 출력: Galaxy S24의 전원이 켜짐 상태입니다.

4. 주의사항 (Precautions)

클래스를 작성할 때 입문자가 가장 많이 하는 실수와 파이썬의 독특한 특성을 바탕으로 주의할 점을 살펴본다.

속성의 자료형 유연성과 동적 타이핑
파이썬 클래스는 속성의 자료형을 미리 선언하지 않는다. 생성 시 전달되는 데이터에 따라 타입이 결정되므로 의도치 않은 자료형이 입력되지 않도록 주의해야 한다.

# 잘못된 예시: 문자열을 기대했으나 정수를 입력한 경우
# faulty_phone = Smartphone(12345, 67890) 

# 올바른 예시: 의도한 자료형(문자열)으로 입력
correct_phone = Smartphone("iPhone 15", "Black")

self 매개변수 누락
클래스 메서드의 첫 번째 매개변수는 반드시 self여야 한다. 이를 누락하면 메서드 호출 시 오류가 발생한다.

# 잘못된 예시: self 누락
# def say_hi():
#     print("Hi")

# 올바른 예시: self 포함
def say_hi(self):
    print("Hi")

💡 활용 팁

  1. 변수 캡슐화: 데이터는 클래스 내부 속성으로 관리하고, 외부에서는 메서드를 통해서만 데이터에 접근하게 설계하는 것이 바람직하다.
  2. 재사용성 극대화: 동일한 구조의 객체가 여러 개 필요할 때 클래스를 활용하면 코드 중복을 획기적으로 줄일 수 있다.
  3. 명확한 명명 규칙: 클래스 이름은 대문자로 시작하는 PascalCase를 사용하는 것이 파이썬의 관례다.
  4. 약어 사용 금지: 클래스명이나 메서드명을 지을 때 의미를 알 수 없는 약어 대신 명확한 풀네임을 사용하는 습관을 들인다.
반응형