es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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) a return(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.

Comments are closed.