Python 데코레이터 : 정적 메서드부터 데이터 클래스까지 알아보기

2024. 9. 16. 10:02·파이썬/Basic
반응형

@staticmethod: 클래스 내부의 독립적인 함수

Python에서 @staticmethod는 클래스 내부에 정의된 독립적인 함수를 나타냅니다. 이 함수는 클래스나 인스턴스와 상관없이 동작하며, self 또는 cls 매개변수를 받지 않습니다.

class MathUtils:
    @staticmethod
    def add(a, b):
        return a + b

result = MathUtils.add(10, 5)  # 15

@classmethod: 클래스 자체를 인자로 받는 메서드

@classmethod는 클래스 자체를 첫 번째 인자로 받는 메서드를 나타냅니다. 이 메서드는 클래스 인스턴스 없이 호출할 수 있으며, 클래스 속성이나 메서드에 접근할 수 있습니다.

class MyClass:
    class_attr = 0

    @classmethod
    def increment_class_attr(cls):
        cls.class_attr += 1

MyClass.increment_class_attr()  # class_attr 값이 1이 됨

@property, @setter, @deleter: 속성 접근자

@property, @setter, @deleter는 클래스 속성에 대한 접근자 메서드를 정의할 때 사용합니다. 이를 통해 속성에 대한 추가 로직을 구현할 수 있습니다.

class Person:
    def __init__(self, name):
        self._name = name

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, value):
        self._name = value

@abstractmethod: 추상 메서드

@abstractmethod는 추상 기본 클래스에서 추상 메서드를 정의할 때 사용합니다. 이 메서드는 구현되지 않고 하위 클래스에서 반드시 구현해야 합니다.

from abc import ABC, abstractmethod

class Animal(ABC):
    @abstractmethod
    def make_sound(self):
        pass

class Dog(Animal):
    def make_sound(self):
        return "Woof!"

@dataclass: 데이터 클래스 생성

@dataclass는 클래스 정의를 간단하게 만들어주는 데코레이터입니다. 이 데코레이터를 사용하면 생성자, 문자열 표현, 비교 연산 등의 표준 메서드를 자동으로 생성해줍니다.

from dataclasses import dataclass

@dataclass
class Person:
    name: str
    age: int

person = Person("Alice", 30)
print(person)  # Person(name='Alice', age=30)

이처럼 Python의 데코레이터는 다양한 용도로 활용될 수 있습니다. 함수와 클래스의 동작을 쉽게 수정하고 확장할 수 있는 강력한 기능을 제공합니다. 데코레이터를 적극적으로 활용하면 코드의 재사용성, 가독성, 유지보수성을 크게 향상시킬 수 있습니다.

저작자표시 비영리 변경금지 (새창열림)

'파이썬 > Basic' 카테고리의 다른 글

파이썬에서 디자인 패턴 적용하기  (8) 2024.10.24
다양한 이미지 확장자와 확장자 변경하기  (6) 2024.10.23
Python의 데코레이터: 강력한 코드 확장 기능  (0) 2024.09.15
sort와 sorted의 차이점  (0) 2024.02.15
문자열에 원하는 문자를 추가하는 방법  (2) 2024.02.10
'파이썬/Basic' 카테고리의 다른 글
  • 파이썬에서 디자인 패턴 적용하기
  • 다양한 이미지 확장자와 확장자 변경하기
  • Python의 데코레이터: 강력한 코드 확장 기능
  • sort와 sorted의 차이점
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (597) N
      • 상품 추천 (105) N
      • MongoDB (4)
      • 하드웨어 (9)
      • 일기장 (4)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • 파이썬 (12) N
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (50)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    유니티
    programmerlife
    appdevelopment
    rtsp
    devlife
    codingcommunity
    스크립트 실행
    긴유통기한우유
    ipcamera
    셀레니움
    리뷰이관
    codingtips
    learntocode
    스크립트 실행 순서
    리스트
    C#
    cv2
    programming101
    카페24리뷰이관
    unity
    상품 리뷰 크롤링
    파이썬
    쇼핑몰리뷰
    믈레코비타멸균우유
    스마트스토어리뷰
    라떼우유
    list
    리뷰관리
    카페24리뷰
    Python
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
Python 데코레이터 : 정적 메서드부터 데이터 클래스까지 알아보기
상단으로

티스토리툴바