diff options
author | Benjamin Peterson <benjamin@python.org> | 2011-06-20 00:42:22 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2011-06-20 00:42:22 (GMT) |
commit | f5ff22329b3a4838054dfadfad74fc5a0519cbb2 (patch) | |
tree | cbf644106089a69d028c954e246dab129b3d02cd /Lib/test/test_super.py | |
parent | 019d0f27a3fc8d4daa7caea8c041cd26d5873950 (diff) | |
download | cpython-f5ff22329b3a4838054dfadfad74fc5a0519cbb2.zip cpython-f5ff22329b3a4838054dfadfad74fc5a0519cbb2.tar.gz cpython-f5ff22329b3a4838054dfadfad74fc5a0519cbb2.tar.bz2 |
use a invalid name for the __class__ closure for super() (closes #12370)
This prevents the assignment of __class__ in the class body from breaking
super. (Although a determined person could do locals()["@__class__"] = 4)
Diffstat (limited to 'Lib/test/test_super.py')
-rw-r--r-- | Lib/test/test_super.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Lib/test/test_super.py b/Lib/test/test_super.py index 914216d..298cae0 100644 --- a/Lib/test/test_super.py +++ b/Lib/test/test_super.py @@ -81,6 +81,16 @@ class TestSuper(unittest.TestCase): self.assertEqual(E().f(), 'AE') + def test___class___set(self): + # See issue #12370 + class X(A): + def f(self): + return super().f() + __class__ = 413 + x = X() + self.assertEqual(x.f(), 'A') + self.assertEqual(x.__class__, 413) + def test_main(): support.run_unittest(TestSuper) |