@staticmethod

송용진·2025년 10월 29일

Python / Django

목록 보기
17/23

@staticmethod

파이썬의 데코레이터 중 하나로
클래스 내부에 정의되지만
인스턴스나 클래스 자체의 특정 상태에 의존하지 않는 메서드를 만들 때 사용됨
이름 그대로 "정적(static)"인 메서드라고 이해하면 됨

@staticmethod로 데코레이트된 메서드는
클래스의네임스페이스 안에 있지만,
실제로 그 클래스의 인스턴스나 클래스 자체와 강하게 묶여 있지 않음

네임스페이스 : 특정 클래스 내부에 정의된 이름(메서드나 변수)들이
다른 이름들과 혼동되지 않도록
고유한 범위와 식별성을 부여하는 공간

특징

1. self 또는 cls 매개변수 없음

일반 인스턴스 메서드가
첫 번째 인자로 self (인스턴스 자체)를 받고,
클래스 메서드가 cls (클래스 자체)를 받는 것과 달리,
@staticmethod는 이 두 가지를 받지 않음

일반 함수처럼 작동하며, 필요한 인자만을 받음

2. 상태 비의존성

클래스의 인스턴스 변수나
클래스 변수에 접근하거나 수정할 수 없음
단순히 특정 입력을 받아
어떤 작업을 수행하고 결과를 반환하는 기능에 적합

3. 호출 방식

클래스 인스턴스를 통해서도 호출할 수 있고,
클래스 자체를 통해서도 직접 호출할 수 있음

사용하는 상황

@staticmethod는 다음과 같은 상황에서 유용하게 사용될 수 있음

1.관련 유틸리티 함수 묶음

어떤 함수가 논리적으로는 특정 클래스와 연관되어 있지만,
그 클래스의 인스턴스나 클래스 자체의 데이터를 필요로 하지 않을 때

예를 들어, 특정 데이터 포맷을 변환하거나 유효성을 검사하는 등의 보조 함수를 클래스 내부에 정의하여 코드의 응집도를 높일 수 있음

2.코드 가독성 및 관리

특정 클래스와 밀접하게 관련된 기능인데,
별도의 독립적인 함수로 두기보다
클래스 내부에 두는 것이 논리적으로 더 깔끔하다고 판단될 때 사용됨

3. 재사용성

클래스 내부의 다른 메서드들이 이 정적 메서드를 호출하여
로직을 공유할 수 있음

profile
개발자

0개의 댓글