R. David Murray <rdmur...@bitdance.com> added the comment:

The documentation also says, "if the object defines both a __getstate__ and a 
__setstate__ method, the state object does not need to be a dictionary and the 
methods can do what they want."  In issue 7848 (which I will close as a 
duplicate of this issue), the object wants to return a single integer as the 
state, and that integer can happen to be zero, so clearly "anything they want" 
is demonstrably not true.  Granted that this can also be worked around with a 
__new__ method, it feels like a broken API.  It unnecessarily complicates the 
implementation of objects that implement the protocol but whose state object 
can legitimately taken on a False value.  It also breaks the principle of least 
surprise for someone taking advantage of the "anything they want" clause (it 
may not occur to them that the 'black blox' state they are passing between 
their methods could take on a False value...and therefore break their code).

Since this was clearly a conscious choice for new-style classes, does anyone 
know why it was made?

----------
keywords: +easy
nosy: +r.david.murray
priority:  -> normal
status: pending -> open
versions: +Python 2.6, Python 2.7, Python 3.1, Python 3.2 -Python 2.5

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue6827>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to