Is a "real" C-Python possible?
Chris Mellon
arkanes at gmail.com
Wed Dec 12 14:23:22 EST 2007
On Dec 12, 2007 12:53 PM, George Sakkis <george.sakkis at gmail.com> wrote:
> On Dec 12, 1:12 pm, Christian Heimes <li... at cheimes.de> wrote:
>
> > Kay Schluehr wrote:
> > > class A(object):
> > > foo = property:
> > > def fget(self):
> > > return self._foo
> > > def fset(self, value):
> > > self._foo = value
> >
> > > which was translated as follows:
> >
> > > class A(object):
> > > def thunk():
> > > def fget(self):
> > > return self._foo
> > > def fset(self, value):
> > > self._foo = value
> > > return vars()
> > > foo = propery(**thunk())
> > > del thunk
> >
> > Python 2.6 and 3.0 have a more Pythonic way for the problem:
> >
> > class A(object):
> > @property
> > def foo(self):
> > return self._foo
> >
> > @foo.setter
> > def foo(self, value)
> > self._foo = value
> >
> > @foo.deletter
> > def foo(self)
> > del self._foo
> >
> > class B(A):
> > # one can even overwrite the getter in a subclass
> > @foo.getter
> > def foo(self):
> > return self._foo * 2
> >
> > Christian
>
> This is by definition Pythonic since it was conceived by the BDFL.It
> is also certainly an improvement over the current common practice of
> polluting the class namespace with private getters and setters. Still
> it's a kludge compared to languages with builtin support for
> properties.
How exactly is this a kludge? This is almost identical syntax (but
with less indentation) to a C# property declaration. The only thing
that's simpler is auto-generation of trivial accessors via a
decoration, but those are useless in Python so only the case of
getters and setters that actually do something needs to be addressed.
If the only thing that's not a "kludge" is direct syntax support for a
feature, you've set a pretty high and uselessly arbitrary bar.
More information about the Python-list
mailing list