📌 @staticmethod는(데코레이터(decorator)) 무엇인가요?

2025. 5. 15. 13:07·기술블로그-Django편

📌 @staticmethod는 무엇인가요?

Python에서 @staticmethod는 데코레이터(decorator) 중 하나로, 클래스 내부에서 정의되지만 인스턴스(self)와 무관하게 동작하는 메서드를 만들 때 사용합니다.


✅ 데코레이터란?

데코레이터는 기능을 꾸며주는 문법입니다.
@ 기호를 사용해 함수나 메서드에 특별한 의미를 부여할 수 있어요.

예시:

@staticmethod

이 줄은 바로 아래의 함수에 "정적 메서드" 기능을 입혀주는 것입니다.


🎯 @staticmethod가 필요한 이유

일반적으로 클래스 내부의 메서드는 self를 인자로 받습니다:

def method(self):
    pass

하지만, 클래스 내부에서 단순한 유틸리티 함수나 내부 도구로 쓰는 함수라면 self가 필요하지 않죠.

이럴 때 사용하는 것이 바로 @staticmethod입니다.


✅ 사용 예제

import random, string

class ShortURL:
    @staticmethod
    def generate_code():
        characters = string.ascii_letters + string.digits
        return ''.join(random.choice(characters) for _ in range(8))

이 메서드는 self 없이 호출 가능합니다:

ShortURL.generate_code()  # ✅ OK

🔍 일반 메서드 vs staticmethod

구분 일반 메서드 staticmethod

첫 번째 인자 self (인스턴스) 없음
호출 방식 obj.method() obj.method() or Class.method()
용도 인스턴스 상태를 다룸 단순 도구 함수, 유틸리티 로직

🧠 언제 사용하나요?

상황 사용 여부

인스턴스 상태를 참조해야 함 ❌ 사용하지 않음
클래스 변수만 사용할 경우 @classmethod 고려
독립적인 로직 처리 (예: 랜덤 코드 생성) ✅ @staticmethod 적합

⚠️ 주의사항

  • @staticmethod는 클래스나 인스턴스 상태를 전혀 알 수 없습니다.
  • 단순 기능 제공에만 사용하세요.

📌 요약

  • @staticmethod는 클래스 내부에 정의되지만 self가 필요 없는 함수에 사용
  • 클래스 인스턴스 없이도 호출 가능 (ClassName.method())
  • 순수 유틸성 함수에 적합 (예: 랜덤코드 생성, 포맷팅, 계산 등)

💡 정적 메서드는 "이 클래스 안에 속하지만, 이 객체와 무관한 기능"이라는 것을 명확히 보여주는 방식입니다.

궁금하다면 @classmethod와 비교한 정리도 추가로 알려드릴 수 있어요!

'기술블로그-Django편' 카테고리의 다른 글

🔄 클래스/함수 이름 변경 시 꼭 써야 할 리팩토링 기능 (Refactor → Rename)  (0) 2025.05.15
✅ Django DRF에서 Serializer 유효성 검사, 내부 구조까지 완전 정복!  (0) 2025.05.15
📌 Django에서 DRF 사용 시 Serializer가 꼭 필요한 이유  (0) 2025.05.15
📌 Django REST Framework(DRF)란?  (0) 2025.05.15
🧠 Django 클래스 기반 뷰(CBV)의 속성들, 왜 쓰는지 헷갈린다면?  (0) 2025.05.15
'기술블로그-Django편' 카테고리의 다른 글
  • 🔄 클래스/함수 이름 변경 시 꼭 써야 할 리팩토링 기능 (Refactor → Rename)
  • ✅ Django DRF에서 Serializer 유효성 검사, 내부 구조까지 완전 정복!
  • 📌 Django에서 DRF 사용 시 Serializer가 꼭 필요한 이유
  • 📌 Django REST Framework(DRF)란?
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (734) N
      • Python (32)
      • 프로젝트 (58) N
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41) N
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5) N
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    oliveoilhealth
    btsreunion
    americanlaw
    youngprofessionals
    remittance
    chinanightlife
    college reunions
    basalcellcarcinoma
    smartphonedurability
    hotcoffeecase
    classaction
    travel ban
    americaparty
    btsdischarge
    life reflection
    btscomeback
    homebartrend
    RM
    bts
    titaniumcase
    galaxys25ultra
    self-growth
    뷔
    btsjungkook
    global politics
    trumpmuskclash
    urbantrends
    livebroadcast
    lawsuitculture
    newpoliticalparty
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
📌 @staticmethod는(데코레이터(decorator)) 무엇인가요?
상단으로

티스토리툴바