데코레이터에 대해 질문이 있습니다. 나는 파이썬에서 데코레이터 개념을 이해하려고 노력하고 있지만 클래스에 데코레이터를 사용하는 것에 매달려있다. 파이썬에서 객체 지향 프로그램에 데코레이터를 구현하는 방법
class decorate:
def __init__(self,f):
self.f = f
def __call__(self)
self.f()
@decorate
def foo():
print "inside foo"
foo()
with_class.py 나는 한 평 파일 내부의 전체 코드를 삽입하고 예상대로 실행. OUTPUT : inside foo
하지만 다른 클래스의 객체를 다른 .py 파일로 꾸밀려고하고 동일한 출력을 얻으려고 시도했습니다. 첫 번째 .py 파일에 foo()
을 주석 처리하고 두 번째 .py 파일에서 아래 코드를 사용했습니다.
use_class.py
import with_class
a = with_class.decorate()
그러나 오류 TypeError: __init__ takes exactly 2 arguments(1 given)
을 던지고있다. __init__
을 호출하는 동안 우리는 2 개의 인수를 제공해야합니다. use_class.py
에 foo
메서드를 실행하기 위해 전달할 항목을 얻지 못하고 있습니다. 다시 에서 f
을 제거하여 __call__(self,f)
을 사용해 보았지만 오류가 발생합니다. 그것은 개념을 얻지 못하고있는 것 같습니다.
@decorate
def foo():
print "inside foo"
이 무엇
을해야합니까? 그 인수를 전달하십시오. – user2357112
왜 당신은'꾸미다 '라고 부르니? 'with_class.foo()'를 호출해야합니다. – Bakuriu
데코 레이트가 클래스입니다. –