[Python-Dev] Extended Function syntax

holger krekel pyth@devel.trillke.net
Thu, 30 Jan 2003 15:12:31 +0100


Guido van Rossum wrote:
> > There's something odd about writing
> > 
> > def property foo:
> >     ...
> > 
> > Both of
> > 
> > defprop foo:
> >     ...
> > 
> > or 
> > 
> > define property foo:
> >     ...
> > 
> > seem more natural.
> > 
> > def foo [property]:
> >     ...
> > 
> > anyone?  Probably relying on the difference between [ and ( kills it.
> 
> Yes.
> 
> How about
> 
>   foo = property:
>       ...

IMO none of the new syntax ideas really have much appeal.  

One way to define lightweight properties today is something like

    foo = property(
            lambda s: s.__dict__.get('_foo_', 42),
            lambda s,x: s.__dict__.__setitem__('_foo_', x),
            lambda s: s.__dict__.__delitem__('_foo_'),
            "foo property"
          )

I don't claim this is a great solution but it is rather
efficient syntaxwise.  If properties-accessor/modifiers 
have considerably more body-code then the current overhead of

    def _getfoo(self, ...):
        ...
    def _setfoo(self, ...):
        ...
    def _delfoo(self, ...):
        ...

    foo = property(_getfoo, _setfoo, _delfoo, 
                   "docstring")

isn't too bad, either.  

So I think that any new syntax needs to satisfy more needs
than just curing some property-uglyness. 

Neverthelss, Michael's original patch is in a different class. 
Maybe property-aspects should be left out of its dicussion.

just my 2c,

    holger