summaryrefslogtreecommitdiff
path: root/tests/basics/subclass_classmethod.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics/subclass_classmethod.py')
-rw-r--r--tests/basics/subclass_classmethod.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/basics/subclass_classmethod.py b/tests/basics/subclass_classmethod.py
index 00a2ebd7c..3089726aa 100644
--- a/tests/basics/subclass_classmethod.py
+++ b/tests/basics/subclass_classmethod.py
@@ -35,3 +35,34 @@ class B(A):
B.bar() # class calling classmethod
B().bar() # instance calling classmethod
B().baz() # instance calling normal method
+
+# super inside a classmethod
+# ensure the argument of the super method that is called is the child type
+
+
+class C:
+ @classmethod
+ def f(cls):
+ print("C.f", cls.__name__) # cls should be D
+
+ @classmethod
+ def g(cls):
+ print("C.g", cls.__name__) # cls should be D
+
+
+class D(C):
+ @classmethod
+ def f(cls):
+ print("D.f", cls.__name__)
+ super().f()
+
+ @classmethod
+ def g(cls):
+ print("D.g", cls.__name__)
+ super(D, cls).g()
+
+
+D.f()
+D.g()
+D().f()
+D().g()