Hello, Originally I posted this as a bug but it was shot down pretty quickly. I am still mildly curious about this as I'm missing a bit of understanding of Python here. Why is it that the following code snippet:
def decorator( call ): def inner(func): def application( *args, **kwargs ): call(*args,**kwargs) func(*args,**kwargs) return application return inner class DecorateMe: @decorator( call=DecorateMe.callMe ) def youBet( self ): pass def callMe( self ): print "Hello!" DecorateMe().youBet() Will not compile, giving: Traceback (most recent call last): File "badpython.py", line 10, in <module> class DecorateMe: File "badpython.py", line 11, in DecorateMe @decorator( call=DecorateMe.callMe ) NameError: name 'DecorateMe' is not defined Where if you change the "call=DecorateMe.callMe" to "call=lambda x: DecorateMe.callMe(x)" everything goes along its merry way. Nesting the call in a lambda seems to allow it to recognize the class definition. Any ideas as to what is going on here (other than ugly code)? Thank you, Thomas Dimson -- http://mail.python.org/mailman/listinfo/python-list