Hi. I think I'm missing something about multiple inheritance in python.
I've got this code. class Foo: def __init__(self): self.x = "defined by foo" self.foo = None class Bar: def __init__(self): self.x = "defined by bar" self.bar = None class Foobar(Foo,Bar): pass fb = Foobar() print fb.x print fb.__dict__ which returns : >>> defined by foo {'x': 'defined by foo', 'foo': None} So I guess not defining __init__ in my class Foobar will call __init__ from my superclass Foo. Also __dict__ doesn't show an attribute 'bar':None so I guess Bar.__init__ is not called at all. I would like to have a subclass with all attributes from superclasses defined, and only the attribute from the first when there is conflict (i.e. in this case, Foobar would be like this but with bar:None) I tried this : class Foobar(Foo,Bar): def __init__(self): Foo.__init__(self) Bar.__init__(self) >>> defined by bar {'x': 'defined by bar', 'foo': None, 'bar': None} Here I have all I want, except the value of 'x' comes from the 'Bar' superclass rather than Foo. So, to have what I want, I would have to invert the two calls to __init__ in order to have the right x value. What I find awkward here is that the order of __init__ calls matters, rather than the order of the classes in the class declaration. Do you have any ideas of a way to get this multiple inheritance thing solved without having to do those __init__ calls ? Thomas -- http://mail.python.org/mailman/listinfo/python-list