Ich versuche, zwei Dekorateure zu verketten. aber einige, wie am Ende läuft nur einer. kann jemand mir Lösung für das drucken hello John!
Verkettung Dekoratoren
def decorator_redis(func_name):
def redis_decorator(func):
@wraps(func)
def redis_wrapper(*args):
redis_utilty = RedisUtilties()
entity_id = args[0]
return 'hello' + entity_id
return redis_wrapper
return redis_decorator
def decorator_ES(func_name):
def ES_decorator(func):
@wraps(func)
def ES_wrapper(*args):
return args[0]+ '!'
return ES_wrapper
return ES_decorator
@decorator_redis('find')
@decorator_ES('find')
def fetch_entity(name):
return
print(fetch_entity('John'))
Ich brauche vorschlagen. Aber in der Lage, hello John
oder John !
auszudrucken, abhängig davon, welchen Dekorator ich einzeln verwendete.
Ihre Einrückung scheint falsch zu sein. Bitte reinige deinen Code. –
Warum haben Sie Dekorateurfabriken? Keiner Ihrer Dekoratoren verwendet den Parameter 'func_name'. –
Das grundlegende Problem ist, dass keiner der Wrapper das Original 'func()' aufruft; Sie haben die dekorierte Funktion effektiv umgangen. –