summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/class_super_closure.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics/class_super_closure.py')
-rw-r--r--tests/basics/class_super_closure.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/basics/class_super_closure.py b/tests/basics/class_super_closure.py
new file mode 100644
index 0000000000..41acae90de
--- /dev/null
+++ b/tests/basics/class_super_closure.py
@@ -0,0 +1,18 @@
+# test that no-arg super() works when self is closed over
+
+class A:
+ def __init__(self):
+ self.val = 4
+ def foo(self):
+ # we access a member of self to check that self is correct
+ return list(range(self.val))
+class B(A):
+ def foo(self):
+ # self is closed over because it's referenced in the list comprehension
+ # and then super() must detect this and load from the closure cell
+ return [self.bar(i) for i in super().foo()]
+ def bar(self, x):
+ return 2 * x
+
+print(A().foo())
+print(B().foo())