파이썬의 클래스에는 세 가지 종류의 메서드가 있습니다.
인스턴스 메서드(가장 흔한), 클래스 메서드, 정적 메서드.
각자 다른 역할과 사용 시점이 있습니다.
인스턴스 메서드.
첫 매개변수가 self.
인스턴스의 데이터에 접근.
d.bark() 같은 일반적 호출.
가장 자주 쓰이는 형태입니다.
클래스 메서드.
@classmethod 데코레이터로 표시.
첫 매개변수가 cls(클래스 자신).
인스턴스 없이 클래스에서 직접 호출 가능.
보통 「대안적 생성자(alternative constructor)」 역할을 합니다.
class Date: @classmethod; def from_string(cls, s): year, month = map(int, s.split('-')); return cls(year, month).
Date.from_string("2026-04")처럼 호출.
정적 메서드.
@staticmethod 데코레이터.
self·cls 모두 안 받음.
사실상 클래스 안에 들어 있는 일반 함수.
「이 함수는 이 클래스와 의미상 관련이 있지만 인스턴스나 클래스의 데이터를 안 쓴다」를 표현.
class Math: @staticmethod; def add(a, b): return a + b.
Math.add(3, 5).
비유로 정리.
인스턴스 메서드는 「내 강아지(인스턴스)에게 명령」, 클래스 메서드는 「강아지 종 자체에 대해 무언가」(예: 새 강아지 만들기), 정적 메서드는 「강아지 회사의 사무실에 같이 두는 일반 도구」(강아지 자체와는 직접 관련 없음).
각자 의도가 다르므로 적절히 골라 씁니다.
한 줄 요약
파이썬 메서드는 인스턴스 메서드(self), 클래스 메서드(@classmethod, cls — 대안 생성자), 정적 메서드(@staticmethod — 그냥 함수)의 셋으로 나뉩니다.
더 알아볼 것
- 클래스 메서드의 「from_X」 패턴
- 정적 메서드의 모듈 함수 대비 장점
- 왜 self는 자동이 아닌가