summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/subclass_native_init.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2017-11-30 10:32:35 +1100
committerDamien George <damien.p.george@gmail.com>2017-12-12 16:47:38 +1100
commitfd0b0db8738efcee4b0b4d5c337aa2ad9c1ae3b0 (patch)
tree0d2b17d702670b32d001f73448294b8a1d9a656c /tests/basics/subclass_native_init.py
parentd32d22dfd79439e07739166eaa3f7e41466c7ec8 (diff)
downloadmicropython-fd0b0db8738efcee4b0b4d5c337aa2ad9c1ae3b0.tar.gz
micropython-fd0b0db8738efcee4b0b4d5c337aa2ad9c1ae3b0.zip
tests/basics: Add test for overriding a native base-class's init method.
Diffstat (limited to 'tests/basics/subclass_native_init.py')
-rw-r--r--tests/basics/subclass_native_init.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/basics/subclass_native_init.py b/tests/basics/subclass_native_init.py
new file mode 100644
index 0000000000..38d2f23ac3
--- /dev/null
+++ b/tests/basics/subclass_native_init.py
@@ -0,0 +1,44 @@
+# test subclassing a native type and overriding __init__
+
+# overriding list.__init__()
+class L(list):
+ def __init__(self, a, b):
+ super().__init__([a, b])
+print(L(2, 3))
+
+# inherits implicitly from object
+class A:
+ def __init__(self):
+ print("A.__init__")
+ super().__init__()
+A()
+
+# inherits explicitly from object
+class B(object):
+ def __init__(self):
+ print("B.__init__")
+ super().__init__()
+B()
+
+# multiple inheritance with object explicitly mentioned
+class C:
+ pass
+class D(C, object):
+ def __init__(self):
+ print('D.__init__')
+ super().__init__()
+ def reinit(self):
+ print('D.foo')
+ super().__init__()
+a = D()
+a.__init__()
+a.reinit()
+
+# call __init__() after object is already init'd
+class L(list):
+ def reinit(self):
+ super().__init__(range(2))
+a = L(range(5))
+print(a)
+a.reinit()
+print(a)