정적 메소드

넘실넘실·2025년 1월 29일

🔖정적 메소드

  • 추상 메소드와 디폴트 메소드는 구현 객체가 필요하지만 정적 메소드는 구현 객체가 없어도 이넡페이스만으로 호출할 수 있다.
  • 메소드 위에 @staticmethod@classmethod 를 붙여서 사용한다. 이 때 정적 메소드는 매개변수에 self를 지정하지 않는다.
# 디폴트 메소드
class Calc:
    def add(self, x: int, y: int) -> int:
        return x+y


calc = Calc()
result = calc.add(x=1, y=2)
# 정적 메소드
class Calc:
    @staticmethod
    def add(x: int, y: int) -> int:
        return x+y


result = Calc.add(x=1, y=2)
print(result)

⁉️@staticmethod@classmethod의 차이는?

@staticmethod@classmethod
self나 cls를 첫 번째 인자로 받지 않음cls를 첫 번째 인자로 받음
인스턴스를 생성하지 않고 호출 가능인스턴스를 생성하지 않고 속성도 접근 가능
주로 클래스 내부 뿐만 아니라 외부에서 호출하는 독립적인 함수 역할을 함
부모 클래스 개체로 선언 시 부모, 자식 클래스 변수 모두 변경됨자식 클래스 객체로 선언 시 자식 클래스의 클래스 변수만 변경됨

🤔언제 사용할까?

  • 자주 사용하는 함수를 모아 두는 유틸리티 클래스를 생성할 때 사용한다
class ProjectUtils:
    @staticmethod
    def check_date_range(start_date: str, end_date: str):
        start_date = datetime.strptime(start_date, "%Y-%m-%d")
        end_date = datetime.strptime(end_date, "%Y-%m-%d")
        assert start_date <= end_date, "start_date must be less than or equal to end_date"

📑 reference

profile
어쩌다보니 데이터쟁이

0개의 댓글