# This *FAILS* with AttributeError: 'FancyPublisher' # object has no attribute 'listeners' class FancyPublisher(threading.Thread, Publisher): def __init__(self): super(FancyPublisher, self).__init__()
F = FancyPublisher() F.register('me', None) ------------------- The problem is that super appears to only work with single inheritance. There may be a way to makle it work for multiple inheritance by changing the second parameter but the documentration is a bit thin!! For that reason I tend not to use super but instead prefer the classical method of explicit call: class FancyPublisher(threading.Thread, Publisher): def __init__(self): Publisher.__init__(self) That way its clear which superclass is being called and I can call all of the superclasses in whichever order I want. Hopefully someone can explain how to use super properly to do this, but it beats me! (This is why super() doesn't appear in the OOP topic in my tutor, I found it more confusing than helpful for a beginner - and even for me!) Alan G _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor