diff options
author | Amaury Forgeot d'Arc <amauryfa@gmail.com> | 2008-02-15 21:22:45 (GMT) |
---|---|---|
committer | Amaury Forgeot d'Arc <amauryfa@gmail.com> | 2008-02-15 21:22:45 (GMT) |
commit | 60d6c7f0cc0749a8ccd29fce652971d1833cc319 (patch) | |
tree | 2414893d7b24e50c28f75736f7739f2860b06e4c /Lib/test/test_descr.py | |
parent | e9b9b35931c72c6c27e87c1b40ff08903395ce89 (diff) | |
download | cpython-60d6c7f0cc0749a8ccd29fce652971d1833cc319.zip cpython-60d6c7f0cc0749a8ccd29fce652971d1833cc319.tar.gz cpython-60d6c7f0cc0749a8ccd29fce652971d1833cc319.tar.bz2 |
Issue #2115: __slot__ attributes setting was 10x slower.
Also correct a possible crash using ABCs.
This change is exactly the same as an optimisation
done 5 years ago, but on slot *access*:
http://svn.python.org/view?view=rev&rev=28297
Diffstat (limited to 'Lib/test/test_descr.py')
-rw-r--r-- | Lib/test/test_descr.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index 755a967..3c607f7 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -1182,6 +1182,24 @@ order (MRO) for bases """ a.foo = 42 self.assertEqual(a.__dict__, {"foo": 42}) + def test_slots_descriptor(self): + # Issue2115: slot descriptors did not correctly check + # the type of the given object + import abc + class MyABC: + __metaclass__ = abc.ABCMeta + __slots__ = "a" + + class Unrelated(object): + pass + MyABC.register(Unrelated) + + u = Unrelated() + self.assert_(isinstance(u, MyABC)) + + # This used to crash + self.assertRaises(TypeError, MyABC.a.__set__, u, 3) + def test_dynamics(self): # Testing class attribute propagation... class D(object): |