파이썬의 데코레이터 중 하나로
클래스 내부에 정의되지만
인스턴스나 클래스 자체의 특정 상태에 의존하지 않는 메서드를 만들 때 사용됨
이름 그대로 "정적(static)"인 메서드라고 이해하면 됨
@staticmethod로 데코레이트된 메서드는
클래스의네임스페이스 안에 있지만,
실제로 그 클래스의 인스턴스나 클래스 자체와 강하게 묶여 있지 않음
네임스페이스: 특정 클래스 내부에 정의된 이름(메서드나 변수)들이
다른 이름들과 혼동되지 않도록
고유한 범위와 식별성을 부여하는 공간
self 또는 cls 매개변수 없음일반 인스턴스 메서드가
첫 번째 인자로 self (인스턴스 자체)를 받고,
클래스 메서드가 cls (클래스 자체)를 받는 것과 달리,
@staticmethod는 이 두 가지를 받지 않음
일반 함수처럼 작동하며, 필요한 인자만을 받음
클래스의 인스턴스 변수나
클래스 변수에 접근하거나 수정할 수 없음
단순히 특정 입력을 받아
어떤 작업을 수행하고 결과를 반환하는 기능에 적합
클래스 인스턴스를 통해서도 호출할 수 있고,
클래스 자체를 통해서도 직접 호출할 수 있음
@staticmethod는 다음과 같은 상황에서 유용하게 사용될 수 있음
어떤 함수가 논리적으로는 특정 클래스와 연관되어 있지만,
그 클래스의 인스턴스나 클래스 자체의 데이터를 필요로 하지 않을 때
예를 들어, 특정 데이터 포맷을 변환하거나 유효성을 검사하는 등의 보조 함수를 클래스 내부에 정의하여 코드의 응집도를 높일 수 있음
특정 클래스와 밀접하게 관련된 기능인데,
별도의 독립적인 함수로 두기보다
클래스 내부에 두는 것이 논리적으로 더 깔끔하다고 판단될 때 사용됨
클래스 내부의 다른 메서드들이 이 정적 메서드를 호출하여
로직을 공유할 수 있음