파이썬 메서드의 세 가지 종류
파이썬 클래스에는 세 가지 종류의 메서드가 있습니다. 바로 인스턴스 메서드(instance method), 클래스 메서드(class method), 그리고 정적 메서드(static method)입니다. 이 중 정적 메서드는 객체나 클래스의 상태와 독립적으로 동작하는 특별한 메서드입니다.
예제 코드
다음 코드를 살펴보겠습니다.
class OurClass:
def method(self):
return 'instance method called', self
@classmethod
def classmethod(cls):
return 'class method called', cls
@staticmethod
def staticmethod():
return 'static method called'
위 예제에서 세 번째 메서드인 OurClass.staticmethod는 @staticmethod 데코레이터가 붙어 있어 정적 메서드로 표시되었습니다.
정적 메서드의 특징
정적 메서드는 self나 cls 매개변수를 받지 않는다는 점에서 인스턴스 메서드 및 클래스 메서드와 구별됩니다. 대신 필요에 따라 임의 개수의 다른 매개변수는 자유롭게 전달받을 수 있습니다.
따라서 정적 메서드는 객체 상태(object state)도 수정할 수 없고, 클래스 상태(class state)도 변경할 수 없습니다. 접근할 수 있는 데이터에 제한이 있으며, 주된 용도는 관련 기능을 클래스 이름공간(namespace) 안에 체계적으로 묶어두는 것입니다. 즉, 클래스와 논리적으로 연관성이 있지만 내부 상태에 의존하지 않는 유틸리티 성격의 함수를 배치하기에 적합합니다.
정적 메서드 호출 방법
앞선 코드의 정적 메서드는 다음과 같이 호출할 수 있습니다.
>>> obj = OurClass()
>>> obj.staticmethod()
'static method called'
흥미로운 점은 정적 메서드가 self 매개변수를 사용하지 않기 때문에 인스턴스를 생성하지 않고 클래스 이름으로 직접 호출해도 동일하게 작동한다는 것입니다(OurClass.staticmethod()). 덕분에 단순히 함수 하나만 필요한 경우에도 불필요한 객체 생성 없이 깔끔하게 코드를 구성할 수 있습니다.