일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스팸
- ROS2
- openAI
- humble
- Torch
- no space left on device
- tensorflow
- 판교
- TTS
- python
- ChatGPT
- string
- 터미널
- 딥러닝
- 분당맛집
- CUDA
- linux
- GPT
- socketio
- 맛집
- error
- pytorch
- CLASS
- ubuntu
- Android
- ros
- 티스토리챌린지
- timm
- opencv
- 오블완
- Today
- Total
RoBoLoG
[Python] Wrapper란 무엇인가? 본문
파이썬에서 "wrapper"는 일반적으로 두 가지 주요한 맥락에서 사용됩니다: 데코레이터(Decorator)와 래퍼 클래스(Wrapper Class)입니다. 각각의 맥락에서 wrapper의 기능은 다음과 같습니다:
1. 데코레이터에서의 Wrapper
데코레이터는 함수나 메서드의 기능을 수정하거나 확장할 때 사용됩니다. 이 경우, "wrapper"는 데코레이터 내부에 정의된 함수를 가리키며, 원래의 함수를 '감싸는(wrap)' 역할을 합니다. 기본적인 구조는 다음과 같습니다:
def decorator(func):
def wrapper(*args, **kwargs):
# 여기서 추가적인 작업을 수행
result = func(*args, **kwargs)
# 여기서 추가적인 작업을 수행
return result
return wrapper
여기서 wrapper 함수는 decorator에 의해 "감싸진" func 함수를 호출하고, 필요한 경우 그 전후에 추가 작업을 수행합니다. 이를 통해 기존 함수의 기능을 변경하거나 확장할 수 있습니다.
2. Wrapper 클래스
래퍼 클래스는 다른 클래스나 객체의 기능을 확장하거나 변경하기 위해 사용됩니다. 이러한 래퍼는 원래의 객체를 내부적으로 보유하고 있으며, 원래 객체의 메서드에 접근하거나 추가적인 기능을 제공합니다. 예를 들어, 다음과 같이 사용될 수 있습니다:
class Wrapper:
def __init__(self, wrapped):
self.wrapped = wrapped
def some_method(self):
# 원래 객체의 메서드 호출 전후에 추가적인 작업 수행
return self.wrapped.some_method()
이 예시에서 Wrapper 클래스는 다른 객체를 감싸고, 그 객체의 메서드 호출 전후에 추가적인 작업을 할 수 있습니다.
요약
즉, "wrapper"는 파이썬에서 기존의 함수나 객체의 기능을 변경하거나 확장하기 위해 사용되는 메커니즘을 지칭합니다. 데코레이터에서는 기존 함수를 감싸는 함수로 사용되며, 래퍼 클래스에서는 다른 클래스나 객체를 감싸는 클래스로 사용됩니다. 이러한 방식으로, 기존 코드에 영향을 주지 않으면서 필요한 기능을 추가하거나 변경할 수 있습니다.
'Study > Python' 카테고리의 다른 글
[Python] 파이썬의 메타클래스(MetaClass) (0) | 2024.01.10 |
---|---|
[Python] 디스크립터 (descriptor) (0) | 2024.01.09 |
[Python] 클래스 만들 때 super().__init__() 사용하는 이유? + 부모 클래스가 2개 이상인 경우 (2) | 2024.01.08 |
[Python] 클래스와 서브클래스 (2) | 2024.01.05 |
[Python] 클래스나 객체 내의 보호(protected) 속성 (2) | 2024.01.05 |