int.__init__ incompatible in Python 3.3
ian.g.kelly at gmail.com
Thu Nov 8 18:13:09 CET 2012
On Thu, Nov 8, 2012 at 8:55 AM, Ulrich Eckhardt
<ulrich.eckhardt at dominolaser.com> wrote:
> Preparing for an upgrade from 2.7 to 3, I stumbled across an incompatibility
> between 2.7 and 3.2 on one hand and 3.3 on the other:
> class X(int):
> def __init__(self, value):
> super(X, self).__init__(value)
> On 2.7 and 3.2, the above code works. On 3.3, it gives me a "TypeError:
> object.__init__() takes no parameters". To some extent, this makes sense to
> me, because the int subobject is not initialized in __init__ but in __new__.
> As a workaround, I can simple drop the parameter from the call. However,
> breaking backward compatibility is another issue, so I wonder if that should
> be considered as a bug.
> Bug? Feature? Other suggestions?
A similar change was made to object.__init__ in 2.6, so this could
just be bringing the behavior of int into line with object. There's
nothing about it in the whatsnew document, though. I say open a bug
report and let the devs sort it out.
More information about the Python-list