python - Decorator NameError -


consider simple decorator demo:

class decoratordemo():      def _decorator(f):         def w( self ) :             print( "now decorated")             f( self )         return w      @_decorator     def bar( self ) :         print ("the mundane")  d = decoratordemo() d.bar() 

running gives expected output:

now decorated mundane 

the type d.bar , d._decorator confirm <class 'method'> if add following 2 lines end of above code.

print(type(d.bar)) print(type(d._decorator)) 

now if modify above code define bar method before defining _decorator method, error

     @_decorator nameerror: name '_decorator' not defined 

why ordering of methods relevant in above case ?

because decorated method not 'method declaration' seems. decorator syntax suger hides this:

def bar( self ) :     print ("the mundane") bar = _decorator(bar) 

if put these lines before definition of _decorator, name error doesn't come surprise. @daniel roseman said, class body code, executed top bottom.


Comments

Popular posts from this blog

html - Firefox flex bug applied to buttons? -

html - Missing border-right in select on Firefox -

c# - two queries in same method -