[Zope3-dev] zope.cachedescriptors outdated
Jeff Shell
eucci.group at gmail.com
Sat Feb 24 13:54:23 EST 2007
On 2/22/07, Christian Zagrodnick <cz at gocept.com> wrote:
> Hi
>
> the cachedescriptors package is quite aged as it seems. It hasn't been
> updated for decorator use.
>
> Actually there are only three descriptors:
>
> CachedProperty – Needs to be updated to be used as decorator. But I
> guess we need a deprecation period.
>
> Lazy – Works like charm as property decorator.
>
> readproperty –can go away i think. The property builtin is find. I'd
> add a 12 month deprecation warning.
As long as `Lazy` doesn't go away, I don't mind. CachedProperty is a
little overwhelming.. I guess I haven't had a need for it. I use Lazy
a lot in views and other objects that exist only during the
request/response cycle. It's super handy in those situations.
I wouldn't mind seeing `Lazy` renamed or aliased as `lazyproperty` or
`lazyreadproperty`.
I use `readproperty`, but I have my own copy of it. I didn't realize
it was in cachedescriptors. As I understand it, `readproperty` is
different from the built-in basic `property` descriptor: you can write
to a readproperty. You can't write to a basic `property` that is used
only as a decorator around a getter method.
>>> class Foo(object):
... @property
... def bar(self):
... return 42
...
>>> f = Foo()
>>> f.bar
42
>>> f.bar = 33
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AttributeError: can't set attribute
With `readproperty`, you can still have the simple
getter-method-wrapper property, with the ability to replace the value
on instances. So no, the builtin 'property' descriptor is not fine.
`property` came into being when Python got descriptors, but before it
got decorators. By grand design or divine accident, the fact that the
first argument for `property` is the getter function makes it a useful
decorator. But it wasn't written with decorators in mind. It was
written for ``x = property(getX, setX, delX)``, or some combination
thereof.
--
Jeff Shell
More information about the Zope3-dev
mailing list