"exhuma.twn" <[EMAIL PROTECTED]> wrote: > So, knowing that in python there is one thing to do something, these > three different calls must *do* domething different. But what exactly > *is* the difference? > > ------------ Exampel 1: ----------------------------- > > class B(A): > def __init__(self, *args): > A.__init__(self, args) > > ------------ Exampel 2: ----------------------------- > > class B(A): > def __init__(self, *args): > apply( A.__init__, (self,) + args) > > ------------ Exampel 3: ----------------------------- > > class B(A): > def __init__(self, *args): > super(A,self).__init__(*args)
Yes, they are all different. The first one calls B's immediate base class but packs all of the arguments together into a single tuple. Probably not what you meant. The second one passes B's positional arguments to its immediate base class without messing them up but uses a deprecated function to do it. You should use "A.__init__(self, *args)" instead unless you are concerned about multiple inheritance. The third one skips over the __init__ method in the immediate base class and calls the __init__ method in whatever class follows A in the MRO instead. Probably not what you meant either. -- http://mail.python.org/mailman/listinfo/python-list