2023-01-27 21:51:57

클래스에는 기본적으로 속성과 메서드가 정의됩니다. 그런데 메서드에 @staticmethod라는 데코레이터가 붙으면 해당 메서드는 static method가 됩니다. 또한 @classmethod 데코레이터가 붙으면 class method가 됩니다. class method는 다른 글에서 설명하도록 하겠습니다.

 

정적 메서드(static method)

이 static method는 주로 비슷한 기능을 수행하는 유틸리티(utility) 함수들을 하나의 클래스 안에 묶어두고 싶을 때 사용됩니다. 아래 간단한 예시를 들어보겠습니다. 

 

class Calc:

    @staticmethod
    def add(x, y):
        return x + y

    @staticmethod
    def sub(x, y):
        return x - y

    @staticmethod
    def mul(x, y):
        return x * y

    @staticmethod
    def div(x, y):
        return x / y


print(Calc.add(5, 7))
print(Calc.sub(8, 3))
print(Calc.mul(4, 6))
print(Calc.div(9, 2))

 

보시면 Calc 클래스 안에 4개의 static method가 정의되어 있습니다. 덧셈, 뺄셈, 곱셈, 나누기를 수행하는 간단한 메서드들입니다. 하나의 클래스 안에 들어가 있으니 비슷한 기능을 수행하는 함수들을 하나로 묶어두지 않았을 때보다 조금 더 정돈된 느낌이 듭니다. 코드를 실행해보면 사칙연산을 각각 잘 수행한 것을 확인하실 수 있습니다. 

 

 

Calc.add(5, 7), Calc.sub(8, 3)과 같이 객체를 생성하지 않고 바로 add 메서드를 호출하여 사용할 수 있습니다. 

 

참고자료

[1] https://www.programiz.com/python-programming/methods/built-in/staticmethod