I am trying to subclass Queue and the following code throws an exception:
from Queue import Queue
class MyQueue(Queue, object):
def __init__(self, my_stuff = None):
super(MyQueue, self).__init__()
self.my_stuff = my_stuff
def my_function(self):
return self.my_stuff
And I'm calling it from __main__
like so:
a_queue = MyQueue(my_stuff = "some stuff")
print a_queue
I am getting, as expected:
$ ./my_queue.py
some stuff
But I only get that if I also inherit from object
(per new-style classes). Otherwise I get:
Traceback (most recent call last):
File "./my_queue", line 13, in <module>
a_queue = MyQueue(my_stuff = "some stuff")
File "./my_queue", line 6, in __init__
super(MyQueue, self).__init__()
TypeError: must be type, not classobj
Why? It apparently doesn't work for Queue as easily as it does for e.g. mp.Process (see this question and also this question).