<div>Hi,</div>
<div> </div>
<div>I ran across a strange problem using mulitple inheritance that I hope someone can explain. Basically, I am implementing a Publisher pattern, and when I try to add threading, the order I list Base classes matters! Here is the short sample code-- all help explaining this is appreciated!
</div>
<div> </div>
<div>Thanks,</div>
<div>Marcus</div>
<div> </div>
<div>---</div>
<div>import threading</div>
<div> </div>
<div>class Publisher(object):</div>
<div> def __init__(self): self.listeners = {} </div>
<div> def register(self, id, object):</div>
<div> self.listeners[id] = self.listeners.get(id, object)</div>
<div> </div>
<div> </div>
<div>
<div># This <strong>FAILS</strong> with AttributeError: 'FancyPublisher'</div>
<div># object has no attribute 'listeners'</div></div>
<div>class FancyPublisher(threading.Thread, Publisher):</div>
<div> def __init__(self):</div>
<div> super(FancyPublisher, self).__init__()</div>
<div> </div>
<div>F = FancyPublisher()</div>
<div>F.register('me', None) </div>
<div> </div>
<div> </div>
<div># However, this succeeds!?</div>
<div>
<div>class FancyPublisher(Publisher, threading.Thread):</div>
<div> def __init__(self):</div>
<div> super(FancyPublisher, self).__init__()</div>
<div> </div>
<div>F = FancyPublisher()</div>
<div>F.register('me', None) </div></div>