반응형
@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' 카테고리의 다른 글
파이썬에서 디자인 패턴 적용하기 (7) | 2024.10.24 |
---|---|
다양한 이미지 확장자와 확장자 변경하기 (5) | 2024.10.23 |
Python의 데코레이터: 강력한 코드 확장 기능 (0) | 2024.09.15 |
sort와 sorted의 차이점 (0) | 2024.02.15 |
문자열에 원하는 문자를 추가하는 방법 (0) | 2024.02.10 |