Deadly Dirk wrote:
I cannot get right the super() function:
Python 3.1.1+ (r311:74480, Nov 2 2009, 14:49:22) [GCC 4.4.1] on linux2
Type "copyright", "credits" or "license()" for more information.
==== No Subprocess ====
class P:
    def __init__(__class__,self):
        print("I am a member of class P")

class C(P):
    def __init__(self):
        super().__init__(self)
        print("I am a member of class C")

class P:
    def __init__(self):
        print("I am a member of class P")

class C(P):
    def __init__(self):
        super().__init__(self)
        print("I am a member of class C")

x=C()

That is more or less the text from the "Quick Python Book". What am I doing wrong?

If you're quite new to Python I would advise to drop super and use an explicit call, sounds lame but my guess is that many people do that, 'cause explicit >> implicit. Super is meant to solve some issues about multi inheritance, especially diamond diagram inheritance. It has no benefit for single inheritance.

I'm pretty sure someone will state that understanding super is pretty much easy once you've read the documenation but anticipating all the underlying concepts may be tricky. The only situation where super is absolutely required is when the inheritance diagram is built dynamically during execution. Otherwise, I would say "Have the nuts to explicit which base class method you want to call" (easy for single inheritance though :) )

class C(P):
   def __init__(self):
      P.__init__(self)


JM
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to