D
danielk
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
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