기본 패턴
python
class User:
count = 0
@classmethod
def total(cls):
return cls.count
@staticmethod
def is_valid_name(name):
return len(name) >= 2설명
classmethod는 첫 인자로 클래스 자체를 받으며, 클래스 상태를 다루는 데 적합합니다.staticmethod는 클래스나 인스턴스를 자동으로 받지 않으므로, 논리적으로 클래스 안에 둘 만한 보조 함수를 묶을 때 씁니다.- 인스턴스 메서드, 클래스 메서드, 정적 메서드는 각각 다루는 대상이 다릅니다.
- 객체지향 설계에서는 "이 동작이 인스턴스 상태를 쓰는가, 클래스 상태를 쓰는가, 둘 다 아닌가"로 구분하면 쉽습니다.
짧은 예제
python
class Temperature:
@staticmethod
def c_to_f(c):
return c * 9 / 5 + 32빠른 정리
| 종류 | 첫 인자 | 잘 맞는 역할 |
|---|---|---|
| 인스턴스 메서드 | self | 객체 상태 사용 |
| 클래스 메서드 | cls | 클래스 상태 사용 |
| 정적 메서드 | 없음 | 보조 기능 묶기 |
공식 참고: Classes, Built-in Functions
주의할 점
staticmethod가 많아지면 "정말 클래스 안에 있어야 하나?"를 한 번 생각해 보는 편이
좋습니다. 독립 함수로 두는 쪽이 더 단순한 경우도 많습니다.