When inheriting from two objects like these
class Foo(object):
def __init__(self,a):
self.a=a
class Bar(object):
def __init__(self,b):
self.b=b
Or should I not be trying to do this kind of this in the first place?
Correct. You should be calling only one parent line of __init__
s, not a tree. super
will use the MRO to do a depth-first search of the parent classes looking for the proper __init__
to call. It will not and should not call all possible __init__
s.