Issue 3747: Fix caching in ABCMeta.__subclasscheck__ (R: Georg Brandl)

This commit is contained in:
Nick Coghlan 2008-09-02 10:14:47 +00:00
parent 0792cbf5e1
commit 91ae3ea2b4
1 changed files with 2 additions and 2 deletions

View File

@ -159,12 +159,12 @@ class ABCMeta(type):
# Check if it's a subclass of a registered class (recursive) # Check if it's a subclass of a registered class (recursive)
for rcls in cls._abc_registry: for rcls in cls._abc_registry:
if issubclass(subclass, rcls): if issubclass(subclass, rcls):
cls._abc_registry.add(subclass) cls._abc_cache.add(subclass)
return True return True
# Check if it's a subclass of a subclass (recursive) # Check if it's a subclass of a subclass (recursive)
for scls in cls.__subclasses__(): for scls in cls.__subclasses__():
if issubclass(subclass, scls): if issubclass(subclass, scls):
cls._abc_registry.add(subclass) cls._abc_cache.add(subclass)
return True return True
# No dice; update negative cache # No dice; update negative cache
cls._abc_negative_cache.add(subclass) cls._abc_negative_cache.add(subclass)