[Python-Dev] Definining properties - a use case for class decorators? (original) (raw)

Guido van Rossum guido at python.org
Tue Oct 18 03:55:48 CEST 2005


[Guido]

> I looked at that, and now I believe it's actually better to mention > the property name twice, at least compared to Tim' s approach.

[Greg Ewing]

I'm inclined to agree. Passing functions that you're not going to use as functions but just use the name of doesn't seem right.

And in my version, it's not really redundant, since the name is only used to derive the names of the accessor methods. It doesn't have to be the same as the property name, although using anything else could justifiably be regarded as insane...

OK, so how's this for a radical proposal.

Let's change the property built-in so that its arguments can be either functions or strings (or None). If they are functions or None, it behaves exactly like it always has.

If an argument is a string, it should be a method name, and the method is looked up by that name each time the property is used. Because this is late binding, it can be put before the method definitions, and a subclass can override the methods. Example:

class C:

foo = property('getFoo', 'setFoo', None, 'the foo property')

def getFoo(self):
    return self._foo

def setFoo(self, foo):
    self._foo = foo

What do you think?

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



More information about the Python-Dev mailing list