a question about decorator

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Mon Oct 22 09:02:05 CEST 2007


On Mon, 22 Oct 2007 14:37:36 +0800, kyo guan wrote:

> def A():
> 	print 'warp in A'
> 	def why(self, *arg, **kw):
> 		print 'in A'
> 		print self
> 		print arg
> 		print kw
> 		#self(*arg, **kw)
> 	
> 	return why
> 	
> class T(object):
> 	@A()
> 	def test(g, out):
> 		print 'in test', out
> 
> it will out put:
> 
> warp in A
> in A
> <function test at 0x00BF0C70>
> ()
> {}
> 
> the function why will be called, why? there is no code to call it.

There is: ``@A()``.  Parenthesis means *calling* `A`.  Then `A` returns
`why` and that is then used as decorator function, i.e. called with
`T.test` as argument.

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list