[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