Python 프로그래밍: 클래스 데코레이터와 애플리케이션을 구현하는 방법은 무엇입니까? 파악해야 할 핵심 포인트

王林
풀어 주다: 2023-04-12 17:25:07
앞으로
1545명이 탐색했습니다.

Python의 데코레이터는 함수 또는 클래스일 수 있습니다. 이전 섹션에서는 함수 데코레이터를 사용했습니다. 이제 클래스 데코레이터를 정의하는 방법을 알아 보겠습니다.

데코레이터 역할을 하는 사용자 정의 클래스를 정의하겠습니다. 함수가 클래스로 장식/수정되면 함수는 해당 클래스의 인스턴스가 됩니다. 알아보자:

Python 프로그래밍: 클래스 데코레이터와 애플리케이션을 구현하는 방법은 무엇입니까? 파악해야 할 핵심 포인트

위에 표시된 대로 간단한 클래스 데코레이터를 만들었습니다. 모든 클래스가 데코레이터가 되려면 __call__() 메서드를 구현해야 합니다. __call__() 메서드는 함수 데코레이터의 래퍼 함수와 동일하게 작동합니다.

이제 이 클래스를 사용하여 함수를 장식해 보겠습니다.

Python 프로그래밍: 클래스 데코레이터와 애플리케이션을 구현하는 방법은 무엇입니까? 파악해야 할 핵심 포인트

프로그램 실행 결과는 다음과 같습니다. 클래스 데코레이터 사용 매개변수 *args 및 **kwargs를 사용하면 이러한 매개변수를 사용하여 __call__() 메서드를 구현하고 이를 수정된 함수에 전달해야 합니다. 일반적인 표현 방법은 다음과 같습니다.

Python 프로그래밍: 클래스 데코레이터와 애플리케이션을 구현하는 방법은 무엇입니까? 파악해야 할 핵심 포인트

위 코드에서 클래스 데코레이터의 __call__() 메서드는 *args 및 **kwargs 매개 변수를 허용합니다. 코드 줄에서 호출 메서드는 이를 장식된 함수 self.func(*args,**kwargs)에 전달합니다.

이제 이 클래스 데코레이터를 사용하여 함수를 장식합니다.

Python 프로그래밍: 클래스 데코레이터와 애플리케이션을 구현하는 방법은 무엇입니까? 파악해야 할 핵심 포인트

클래스 장식 장식 함수

프로그램 실행의 출력 결과는 다음과 유사합니다.

Python 프로그래밍: 클래스 데코레이터와 애플리케이션을 구현하는 방법은 무엇입니까? 파악해야 할 핵심 포인트Hello Solo Cui

반환 기능이 있는 클래스 데코레이터 성명

함수 데코레이터의 래퍼 함수에서 return 키워드를 사용하여 데코레이팅된 함수를 반환할 수 있다는 것을 기억하세요. 여기서도 동일한 작업을 수행하지만 __call__ 메서드 내부에서 수행합니다.

결과를 반환하는 클래스 데코레이터

실행 중인 프로그램의 출력은 다음과 같습니다.

Python 프로그래밍: 클래스 데코레이터와 애플리케이션을 구현하는 방법은 무엇입니까? 파악해야 할 핵심 포인트TRACY CUI

위에 표시된 대로 __call__ 메서드에서 수정된 함수를 반환합니다.

return self .func(*args,**args)

파이썬 데코레이터 소개가 끝났습니다.

위 내용은 Python 프로그래밍: 클래스 데코레이터와 애플리케이션을 구현하는 방법은 무엇입니까? 파악해야 할 핵심 포인트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿