클래스에는 기본적으로 속성과 메서드가 정의됩니다. 그런데 메서드에 @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
'Dev > python' 카테고리의 다른 글
PyQt6와 PySide6의 라이선스 차이 (0) | 2023.02.20 |
---|---|
[Flask] Flask API 서버에 인증 기능 넣기 (0) | 2023.02.19 |
[flask] ModuleNotFoundError: No module named 'wtforms.fields.html5' 에러 해결 방법 (2) | 2023.01.31 |
[python] 클래스 속성과 클래스 메서드 (0) | 2023.01.28 |
[python] 비공개 속성, 게터, 세터, @property (0) | 2023.01.26 |
[python] 약수 구하는 알고리즘 (0) | 2023.01.26 |
[python] 클래스 안에 __로 시작하고 __로 끝나는 메소드들, 매직 메소드(magic method) (0) | 2023.01.25 |
[python] 제너레이터의 필요성(메모리 효율성) (0) | 2023.01.16 |