← index #2028Issue #520
Related · high · value 0.896
QUERY · ISSUE

super() appears not to work with multiple inheritance

openby peterhinchopened 2016-05-03updated 2016-06-19
bug

This derives from this forum post.

class A:
    def __init__(self):
        print("A.__init__")

class B(A):
    def __init__(self):
        print("B.__init__")
        super().__init__()

class C(A):
    def __init__(self):
        print("C.__init__")
        super().__init__()


class D(B,C):
    def __init__(self):
        print("D.__init__")
        super().__init__()

If you issue D() at the REPL you get:

>>> D()
D.__init__
B.__init__
A.__init__
<D object at aac31180>

whereas cPython gives:

>>> D()
D.__init__
B.__init__
C.__init__
A.__init__
<__main__.D object at 0x7f40ecd1a358>
>>> 

A further issue with super() - with single inheritance - is this. Despite numerous successful uses I wrote one class where super() returned an empty string. Unfortunately any attempt to produce a test case failed. I appreciate that's a lousy bug report but I thought it worth mentioning if the code is being reviewed.

CANDIDATE · ISSUE

super for `object` does not work

closedby wrobellopened 2014-04-25updated 2014-05-22
bug

Having sp.py file with code

class Test(object):
    def __init__(self):
        super().__init__()

t = Test()

And running with Micro Python

$ ./unix/micropython sp.py
Traceback (most recent call last):
  File "sp.py", line 5, in <module>
  File "sp.py", line 3, in __init__
AttributeError: 'super' object has no attribute '__init__'

Above works with CPython.

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied