diff options
Diffstat (limited to 'tests/basics/subclass_classmethod.py')
-rw-r--r-- | tests/basics/subclass_classmethod.py | 31 |
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() |