super() woes (n00b)

Deadly Dirk dirk at plfn.invalid
Thu Jun 17 14:24:29 EDT 2010


On Thu, 17 Jun 2010 13:48:45 -0400, J. Cliff Dyer wrote:

> super gives you an instantiated version of the super class, which means
> that you don't have to explicitly send self to any methods you call on
> it.
> 
> So use `super().__init__()` instead.

Thanks. Interestingly enough, it works in Python 3, which is what the 
book is about. It doesn't work in Python 2.6

3.1:

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__(self):
        print("I am a member of class P")

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

        
>>> x=C()
I am a member of class P
I am a member of class C
>>> 

2.6:
Python 2.6.4 (r264:75706, Dec  7 2009, 18:45:15) 
[GCC 4.4.1] on linux2
Type "copyright", "credits" or "license()" for more information.

    ****************************************************************
    Personal firewall software may warn about the connection IDLE
    makes to its subprocess using this computer's internal loopback
    interface.  This connection is not visible on any external
    interface and no data is sent to or received from the Internet.
    ****************************************************************
    
IDLE 2.6.4      ==== No Subprocess ====
>>> class P:
    def __init__(self):
        print("I am a member of class P")

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

>>> x=C()
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    x=C()
  File "<pyshell#1>", line 3, in __init__
    super().__init__()
TypeError: super() takes at least 1 argument (0 given)
>>> 


-- 
The missionaries go forth to Christianize the savages - 
as if the savages weren't dangerous enough already.



More information about the Python-list mailing list