isinstance(obj, type(obj)) == True?
tjreedy at udel.edu
Wed Jun 24 20:31:44 CEST 2009
> I have the following problem:
> ipdb> p type(self)
> <class 'component.BiasComponent'>
> ipdb> isinstance(self, component.BiasComponent)
> I thought that isinstance(obj, type(obj)) == True.
Yes, but that is not what you entered ;-).
The name 'component.BiasComponent' is not bound to type(self),
but to another object, probably with the same .__name__ attribute.
> The specific problem is when I try to call the super of a class and it
> only occurs after 'reload'ing the file in the interpreter. What am I
> messing up by reloading?
The relationship between namespace names and definition names. My guess
is that you have two class objects with the same definition name. This
happens when you reload the code for a class and have instances that
keep the original class object alive. This sort of problem is why reload
was *removed* from Py3. It did not work the way people wanted it to and
expected it to. I recommend not to use it.
> It doesn't occur if I using for the first
> time in a fresh interpreter session.
Starting fresh is the right thing to do. IDLE has a 'Restart Shell'
command for this reason. It automatically restarts when you run a file.
You have already wasted more time with reload than most people would
ever save in a lifetime of using reload, even if it worked as expected.
Terry Jan Reedy
More information about the Python-list