[Python-Dev] Re: Call for defense of @decorators (original) (raw)
Shalabh Chaturvedi shalabh at cafepy.com
Fri Aug 6 01:32:46 CEST 2004
- Previous message: [Python-Dev] A usability argument for list-after-def
- Next message: [Python-Dev] Call for defense of @decorators
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I converted some code which makes good use decorators (an example follows):
@paramnames(username='Username', password='Password')
@webmethod(username=str, password=str)
def login(self, username, password, return_to=None):
request = current.request
...
Here is some usability feedback:
Easy to type. I found myself typing the function name before going up one line and typing the decorators - @ decorator @ decorator .
One line is one decorator - this preserves clarity while writing and reading.
I look at the code and all decorators line up in a column just above the function - very easily browsable and hard to miss. No searching or scanning required.
Changing order or decorators (if it matters) is easy.
The only downside I found was:
- @ is a 'noisy' character and makes it look a little cluttered. Usually def has an empty line before it but with decorators there is some funky code sticking to it. Not a big deal, though.
Also, this symptom might get alleviated once editors know how to color decorators nicely. An alternative character (as others have suggested) might be good too. If so, I found '|' particularly nice :)
|paramnames(username='Username', password='Password')
|webmethod(username=str, password=str)
def login(self, username, password, return_to=None):
request = current.request
...
|webmethod()
def logout(self, return_to=None):
current.request.session.user = None
return current.request.redirect(return_to or self._q_location)
Appears accentuated, yet clean, specially for simple/single decorators. Gives an appearance that the decorators are 'connected' to the function.
Conclusion: as a user I'm +1 on the @-decorator syntax, or any similar syntax using an alternative character.
Cheers, Shalabh
- Previous message: [Python-Dev] A usability argument for list-after-def
- Next message: [Python-Dev] Call for defense of @decorators
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]