On Tue, Jan 19, 2016 at 3:28 AM, Charles T. Smith <cts.private.ya...@gmail.com> wrote: > On Tue, 19 Jan 2016 03:19:59 +1100, Chris Angelico wrote: >> Possibility #1: 'int' has been rebound. >> >> Possibility #2: 'type' has been rebound. >> >> I'd check them in that order. >> >> ChrisA > > > But: > > (PDB)p 5 + 0 > 5
That shows that your literals haven't changed. They basically never will (barring *really* crazy shenanigans). > (PDB)class c (object): pass > (PDB)type (c()) is c > True And this shows that the name 'type' probably hasn't changed. It's still possible that it's not the normal 'type' type, but far more likely that it's 'int' that got rebound, which is why I suggested checking for that first. > Okay, I think I understand it now: > > (PDB)type (int) > <type 'module'> > > (PDB)type (float) > <type 'type'> And that's pretty strong evidence right there! So the next question is... what got imported under the name 'int'? int.__name__ will be a start. If that just returns the string 'int', then try int.__package__ which might give a hint. Also, int.__file__ will tell you where it was loaded from, if it was indeed loaded from a file. Armed with that information, you should be able to track down what's going on. It's curious, though, that you have a callable subclass of module bound to the name int. Very curious indeed. ChrisA -- https://mail.python.org/mailman/listinfo/python-list