Amaury Forgeot d'Arc added the comment:
__instancecheck__ is not only slower, it can also cause crashes:
import abc
class MyABC:
__metaclass__ = abc.ABCMeta
__slots__ = ["a"]
class Unrelated:
pass
MyABC.register(Unrelated)
u=Unrelated()
assert isinstance(u, MyABC)
MyABC.a.__set__(u, 3) # Boom
The patch I proposed above correctly raises the error:
TypeError: descriptor 'a' for 'MyABC' objects doesn't apply to
'Unrelated' object
__________________________________
Tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue2115>
__________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com