On Thu, Nov 8, 2012 at 8:55 AM, Ulrich Eckhardt <ulrich.eckha...@dominolaser.com> wrote: > Hi! > > 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) > X(42) > > 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. -- http://mail.python.org/mailman/listinfo/python-list