"Data" vs. "Non-data" Descriptors in PEP 252, and "once" attributes
Martin von Loewis
loewis at informatik.hu-berlin.de
Mon Feb 25 11:40:22 CET 2002
Phillip J. Eby <pje at telecommunity.com> writes:
> Interestingly, this does *not* work if you try to do something similar
> with the built-in 'property' type.
I don't find this surprising. The builtin property type has a fixed
meaning for its constructor argument: they are callables, and they are
called on each access. How did you mean to implement your "once"
properties with it?
> Does anyone know if this usage is safe for future Python versions?
That is the intention. There may be a different syntax in addition to
the one you are using now, which may allow you to write
def anAttr(self) [once]:
print "computing anAttr"
The idea is that at the end of the function definition, once is lookup
up and called with the function that was just defined; whatever it
returns is then taken as the value of anAttr inside aThing.
> Operationally, it seems it would be hard to change any of this in a way
> that would break my "once" examples without also breaking lots of other
> things. But the PEP doesn't really give an official way to create either
> a data or non-data descriptor; it just says what the current
> implementation does. Hence my concern.
Nobody can tell the future with certainty. If you think that certain
wording would tighten the PEP to make you feel more safe, just submit
a patch for the PEP to SF.
More information about the Python-list