어떻게하면 이런 장식을 쓸 수 있을까요? 나는 decorator를 호출 할 때 max_hits의 값을 지정할 수 있기를 원한다.Python - 클래스 기반 데코레이터에 선택적 인수를 지정하는 방법은 무엇입니까?
예, 원하는 사용이 될 것
@memoize(max_hits=7)
def a(val):
print val
또는
@memoize
def a(val):
print val
(첫 번째 예제를 사용하여 잘못된 인수에 대한 오류를 제공합니다.)
실내 장식 :
class memoize:
"""A decorator to cache previosly seen function inputs.
usage:
@memoize
def some_func(..
"""
def __init__(self, function, max_hits=None):
self.max_hits = max_hits
self.function = function
self.memoized = {}
def __call__(self, *args, **kwargs):
key = (args,tuple(kwargs.items()))
try:
return self.memoized[key]
except KeyError:
self.memoized[key] = self.function(*args,**kwargs)
return self.memoized[key]
왜 모든 사람이 메모를 남깁니 까. –
@Jakob Bowyer : http://en.wikipedia.org/wiki/Memoization#Etymology – mouad
[Python에서 선택적 인수가있는 클래스 정의] 가능한 복제본 (https://stackoverflow.com/questions/10681038/define-a) -class-with-optional-argument-in-python) –