[Python-Dev] Extended Function syntax

Guido van Rossum guido@python.org
Tue, 28 Jan 2003 17:44:26 -0500


> > >      class Parrot(object):
> > >          class count(Property):
> > >              def Get(prop, self):
> > >                  return self._count
> > >              def Set(prop, self, value):
> > >                  self._count = value
> > >              def Del(prop, self):
> > >                  self._count = 0
> > >          count = count('Current parrot count')
> > >          _count = 0
> > 
> > I'm not sure that this has much to recommend it over the current
> > approach.  The unused 'prop' argument smells like a remnant of the
> > implementation.
> 
> OTOH, if the class were merely used as a container (and never
> instantiated), it looks fairly decent (and indeed doesn't need a
> [filter] modifier, as MWH already suggested):
> 
>     class Parrot(object):
>         _count = 0
>         class count(Property):
>             """The count property."""
>             def __get__(self):
>                 return self._count
>             def __set__(self, value):
>                 self._count = value
>             def __del__(self):
>                 self._count = 0

These all abuse the class keyword for something that's definitely not
a class.  That's a fatal flaw.

--Guido van Rossum (home page: http://www.python.org/~guido/)