Problema de herencia en el decorador de Python
class Foo():
help_message = ""
<pre><code>def Help_Decorator(func):
def wrapper(data, context, caller):
try:
if data[0] == "help":
return(help_message) #<--- no se puede acceder a esto localmente
else:
return func(data,context,caller)
except:
return func(data,context,caller)
return wrapper
</code></pre>
<p>class Bar(Foo):
help<em>message = "¡Un verdadero mensaje de ayuda!"
@foo.Help</em>Decorator
def Run(data,context,caller):
pass
¿Cómo puedo acceder al mensaje de ayuda de Bar desde mi HelpDecorator sin pasarlo como parámetro en Run?
davy.ai
Para acceder al mensaje de ayuda de Bar desde el interior de Help_Decorator sin pasarlo como parámetro en Run, puedes cambiar
return(help_message)
areturn(func.help_message)
. Esto accederá al atributo help_message del objeto función en sí, que en este caso está vinculado a la clase Bar.