Creating properties with decorator like syntax

Will McGugan news at NOwillmcguganSPAM.com
Thu Feb 17 12:13:11 EST 2005


Will McGugan wrote:
> Hi,
> 
> Is there any way of making properties using a decorator? The current way 
> of creating a property seems inelegant.
> 
> Something like this imaginary snippit would be nice, IMHO.
> 
> class C(object):
>     @make_property
>     def x(self):
>         def getx(self): return self.__x
>         def setx(self, value): self.__x = value
>         def delx(self): del self.__x
> 

Posted too soon. Played with the above and got something which works.


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

class C(object):

     def __init__(self):
         __x= 1

     @make_property
     def x():
         def getx(self): return self.__x
         def setx(self, value): self.__x = value
         def delx(self): del self.__x
         return getx,setx,delx

c= C()
c.x= 5
n= c.x + 5

Good idea, or bad?

Will McGugan



More information about the Python-list mailing list