On Dec 12, 1:12 pm, Christian Heimes <[EMAIL PROTECTED]> 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.

George
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to