Tom wrote: > I am trying to understand what happens in the following scenario: > > class Sub_class(Base_class): > def __init__(self, data): > Base_class.__init__(self, data) > > as in: > > # snippet from http://viner.tv/go?set > class Set(list): > def __init__(self, value = []): > list.__init__([])
This is a bug, it should be list.__init__(self, value) > I have just re-read the relevant part of Wesley Chun's 'Core' book, > again, and think I *may* understand. > > Base_class.__init__(self, data) > > is *kind of* like saying: > > self.Base_class.__init__(data) > > i.e. it's doing something *to* self. Yes, that is more or less correct. In general, if c is an instance of class C, a method call c.foo() can also be written as C.foo(c) When you want to call a base class method, you have to use the second form. That is what Base_class.__init__(self) is doing. Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor