[Python-Dev] Data descriptor doc/implementation inconsistency (original) (raw)
Benjamin Peterson benjamin at python.org
Mon Jan 11 01:07:35 CET 2010
- Previous message: [Python-Dev] topics I plan to discuss at the language summit
- Next message: [Python-Dev] Data descriptor doc/implementation inconsistency
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Consider this program:
class Descr(object): def init(self, name): self.name = name def set(self, instance, what): instance.dict[self.name] = what
class X(object): attr = Descr("attr")
x = X() print(x.attr) x.attr = 42 print(x.attr)
It gives in output:
<__main__.Descr object at 0x7fe1c9b28150> 42
The documentation [1] says that Descr is a data descriptor because it defines the set method. It also states that data descriptors always override the value in the instance dictionary. So, the second line should also be the descriptor object according to the documentation.
My question is: Is this a doc bug or a implementation bug? If the former, it will be the description of a data descriptor much less consistent, since it will require that a get method be present, too. If the latter, the fix may break some programs relying on the ability to "cache" a value in the instance dictionary.
[1] http://docs.python.org/reference/datamodel#invoking-descriptors
-- Regards, Benjamin
- Previous message: [Python-Dev] topics I plan to discuss at the language summit
- Next message: [Python-Dev] Data descriptor doc/implementation inconsistency
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]