다른 클래스 메서드로 클래스 메서드를 꾸미고있었습니다. 이클래스 메서드로 클래스 메서드 꾸미기
from functools import wraps
class MyClass(object):
def __init__(self):
print('Within my class object')
def my_decorator(func_to_decorate):
@wraps(func_to_decorate)
def wrapper(self):
print('Before the call')
func_to_decorate(self)
print('After the function call')
return wrapper
@my_decorator
def print_name(self):
print('My name is ------ ')
mobj = MyClass()
mobj.print_name()
가 나는 방법은 무엇을하지 않았다는 것을 깨달았다 장식 my_decorator
의 함수 정의를 보면서 내가 다음
Before the call
My name is ------
After the function call
그러나 필요한 출력을 얻을 좋은 작품처럼 클래스 본다 클래스 메서드는 일반적으로 첫 번째 인수로 걸린다. self
내 질문은 지금 무엇입니까? my_decorator
의 형식은 무엇입니까? 그것은 클래스 메소드, 일반적인 메소드 또는 특별한 메소드입니까?
일반적으로 클래스 내의 메서드는 암시 적 인수 self
을 사용하거나 클래스 메서드가 암시 적 인수 cls
을 사용합니다. 데코레이터는 어느 쪽도 사용하지 않습니다.
여기에서 무슨 일이 일어 났는지 설명해주세요.
부수적으로 클래스 메소드와 인스턴스 메소드를 혼동하고 있습니다. 정규 메소드는 인스턴스 메소드라고 부릅니다. 인스턴스를 첫 번째 인수 인'self'로 사용하기 때문입니다. 클래스 메소드는 데코레이터'@ classmethod'를 사용하여 만들어지며 클래스를 첫 번째 인자로 사용합니다. 일반적으로'cls'라고합니다. –
@SvenMarnach 제 잘못입니다. 나를 고쳐 주셔서 고마워요. – rgk