Hi All

I've not posted to this list before. Hello!

I have a question about decorators and have failed to devise a search that has 
thrown up any history of discussion on this particular matter.

Does the following seem like something that 'should' work? Or is anyone aware 
of a source of documentation that explains historically why the following 
syntax might not be allowed?

I hope this sort of conundrum/discussion-point is appropriate to this forum; 
I'm not on python-dev and this is obviously not a bug.

So..

Decorator grammar is this:

decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE

The grammar prevents this:

>>> class MyDecorator:
...     def decorator_method():
...             pass
...
>>> @MyDecorator().decorator_method()
  File "<stdin>", line 1
    @MyDecorator().decorator_method()
                  ^
SyntaxError: invalid syntax

But is possible to achieve the desired effect by assigning the class instance 
to variable:

>>> mydecorator = MyDecorator()
... @mydecorator.decorator_method
... def f():


My initial thoughts were that the syntax provided a neat way to provide a 
configurable decorator class instance with a number of alternative 
decorator-function generating methods, rather than just the usual __call__.

S
_______________________________________________
python-uk mailing list
python-uk@python.org
http://mail.python.org/mailman/listinfo/python-uk

Reply via email to