[Python-Dev] Extended Function syntax (original) (raw)
Just van Rossum just@letterror.com
Tue, 28 Jan 2003 23:41:42 +0100
- Previous message: [Python-Dev] Extended Function syntax
- Next message: [Python-Dev] Extended Function syntax
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
- Previous message: [Python-Dev] Extended Function syntax
- Next message: [Python-Dev] Extended Function syntax
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]