파이썬에서 클래스 인자에 선택적 인자를 전달하려고합니다. ,파이썬 클래스 장식 자 인자들
class Cache(object):
def __init__(self, function, max_hits=10, timeout=5):
self.function = function
self.max_hits = max_hits
self.timeout = timeout
self.cache = {}
def __call__(self, *args):
# Here the code returning the correct thing.
@Cache
def double(x):
return x * 2
@Cache(max_hits=100, timeout=50)
def double(x):
return x * 2
인수가 두 번째 장식가 (내 __init__
기능에 max_hits=10, timeout=5
) 기본 하나를 덮어 작동하지 않으며 나는 예외 TypeError: __init__() takes at least 2 arguments (3 given)
을 가지고 : 코드 아래 내가 현재 가지고. 나는 많은 해결책을 시도하고 그것에 관한 기사를 읽었지 만, 나는 여전히 그것을 작동하게 만들 수 없다.
이 문제를 해결할만한 아이디어가 있습니까? 감사!
솔루션에 대한 감사 인사와 @lunixbochs! 매력처럼 작동합니다. – Dachmt
개발자가 키워드 인수 대신 위치가 '캐시'를 호출하면 (예 :'@Cache (100,50)') 'function'에는 값 100이 지정되고'max_hits'에는 50이 지정됩니다. 함수가 호출 될 때까지 오류가 발생하지 않습니다. 대부분의 사람들은 균일 한 위치 및 키워드 의미론을 기대하기 때문에 이것은 놀라운 행동으로 간주 될 수 있습니다. – unutbu