[Python-Dev] properties with decorators (was: code blocks using 'for' loops and generators)

Nick Coghlan ncoghlan at iinet.net.au
Thu Mar 17 15:50:53 CET 2005


Josiah Carlson wrote:
> Samuele Pedroni <pedronis at strakt.com> wrote:
[snip]
>>well, I think some people desire a more streamlined way of writing code
>>like:
>>
>>def f(...)
>>...
>>def g(...)
>>...
>>x = h(...,f,g)
>>
>>[property, setting up callbacks etc are cases of this]
> 
> 
> 
> I think properties are the most used case where this kind of thing would
> be nice.  Though the only thing that I've ever had a gripe with
> properties is that I didn't like the trailing property() call - which is
> why I wrote a property helper decorator (a use can be seen in [1]).  But
> my needs are small, so maybe this kind of thing isn't sufficient for
> those who write hundreds of properties.
[snip]

I'm still trying to decide if the following is an elegant solution to defining 
properties, or a horrible abuse of function decorators:

def as_property(func):
   return property(*func())

class Example(object):

   @as_property
   def x():
     def get(self):
       print "Getting!"
     def set(self, val):
       print "Setting!"
     def delete(self):
       print "Deleting!"
     return get, set, delete

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at email.com   |   Brisbane, Australia
---------------------------------------------------------------
             http://boredomandlaziness.skystorm.net


More information about the Python-Dev mailing list