A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2003-January/032488.html below:

[Python-Dev] Extended Function syntax

[Python-Dev] Extended Function syntaxJust van Rossum just@letterror.com
Tue, 28 Jan 2003 23:41:42 +0100
Guido van Rossum wrote:

> >      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

Still, a lot of magic... This is the Property class going with the
above:

    class Property(object):
        class __metaclass__(type):
            def __new__(cls, name, bases, methods):
                if not bases or bases[0] == object:
                    # this is to make the Property class itself...
                    return type.__new__(cls, name, bases, methods)
                return property(methods.get("__get__"),
                                methods.get("__set__"),
                                methods.get("__del__"),
                                methods.get("__doc__"))


Just



RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4