diff options
author | Damien George <damien.p.george@gmail.com> | 2017-11-30 10:32:35 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2017-12-12 16:47:38 +1100 |
commit | fd0b0db8738efcee4b0b4d5c337aa2ad9c1ae3b0 (patch) | |
tree | 0d2b17d702670b32d001f73448294b8a1d9a656c /tests/basics/subclass_native_init.py | |
parent | d32d22dfd79439e07739166eaa3f7e41466c7ec8 (diff) | |
download | micropython-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.py | 44 |
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) |