QUERY · ISSUE
super() appears not to work with multiple inheritance
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
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.