I was debugging some code using isinstance() to make sure the correct object 
was been passed to the method and came across something that is really ticking 
me off. 

I have a class called 'Jitem' in its own file called 'jitem.py'. It's part of a 
package called 'jukebox'. I also have '__all__' that includes 'jitem' so that I 
can do:

from jukebox import *

There is another class that has a method that does this (simplified for this 
example):

def execute(self, command):

I stuck this debug code in the method:

if not isinstance(command, jitem.Jitem):
    print(command.__class__)
    raise TypeError("Command must be an instance of Jitem.")

When this method gets run in a test script, it returns this:

D:\home\python>python jtest.py
<class 'jukebox.jitem.Jitem'>
Traceback (most recent call last):
  File "jtest.py", line 4, in <module>
    executeResults = jc.execute(cmnd)
  File "D:\home\python\jukebox\jconnection.py", line 225, in execute
    raise TypeError("Command must be an instance of Jitem.")
TypeError: Command must be an instance of Jitem.

How can it both get past isinstance() and still say it is the proper class?

Dan Klein
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to