[EMAIL PROTECTED] wrote: > Hello I have a question about inheritance in Python. I'd like to do > something like this: > > class cl1: > def __init__(self): > self.a = 1 > > class cl2(cl1): > def __init__(self): > self.b = 2 > > But in such a way that cl2 instances have atributes 'b' AND 'a'. > Obviously, this is not the way of doing it, because the __init__ > definition in cl2 overrides cl1's __init__. > > Is there a 'pythonic' way of achieving this?
If there's a chance you might have multiple inheritance at some point in this hierarchy, you might also try using super: class cl1(object): # note it's a new-style class def __init__(self): self.a = 1 class cl2(cl1): def __init__(self): super(cl2, self).__init__() self.b = 2 Note that you probably want a new-style class even if you chose not to use super in favor of Jp Calderone's suggestion. There are very few cases for using old-style classes these days. STeVe -- http://mail.python.org/mailman/listinfo/python-list