super() woes (n00b)

Matteo Landi landimatte at gmail.com
Thu Jun 17 13:51:25 EDT 2010


I found few error in your code:
1 the constructor of P class seems to be wrong:

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

2 super() works with new style classes, i.e.  the ones which inherit
from 'object'

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

3 super() need a type as first argument, and an instance as second one:

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

Now it should work (not tested).

On Thu, Jun 17, 2010 at 6:53 PM, Deadly Dirk <dirk at plfn.invalid> wrote:
> On Thu, 17 Jun 2010 16:36:10 +0000, 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?
>
> I tried this, too:
>
>>>> class C(P):
>    def __init__(self):
>        super(__class__).__init__(self)
>        print("I am a member of class C")
>
>
>>>> x=C()
> Traceback (most recent call last):
>  File "<pyshell#30>", line 1, in <module>
>    x=C()
>  File "<pyshell#29>", line 3, in __init__
>    super(__class__).__init__(self)
> TypeError: must be type, not C
>>>>
>
>
>
> --
> The missionaries go forth to Christianize the savages -
> as if the savages weren't dangerous enough already.
> --
> http://mail.python.org/mailman/listinfo/python-list
>



-- 
Matteo Landi
http://www.matteolandi.net/



More information about the Python-list mailing list