@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