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의 데코레이터: 강력한 코드 확장 기능  (1) 2024.09.15
sort와 sorted의 차이점  (0) 2024.02.15
문자열에 원하는 문자를 추가하는 방법  (2) 2024.02.10
'파이썬/Basic' 카테고리의 다른 글
  • 파이썬에서 디자인 패턴 적용하기
  • 다양한 이미지 확장자와 확장자 변경하기
  • Python의 데코레이터: 강력한 코드 확장 기능
  • sort와 sorted의 차이점
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • 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)
  • 인기 글

  • 태그

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

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

티스토리툴바