mirror of
https://github.com/python/cpython.git
synced 2025-08-02 08:02:56 +00:00
#7624: Fix isinstance(foo(), collections.Callable) for old-style classes.
This commit is contained in:
parent
6f682be82b
commit
47627d5164
4 changed files with 64 additions and 12 deletions
|
@ -4,6 +4,11 @@
|
|||
"""Abstract Base Classes (ABCs) according to PEP 3119."""
|
||||
|
||||
|
||||
# Instance of old-style class
|
||||
class _C: pass
|
||||
_InstanceType = type(_C())
|
||||
|
||||
|
||||
def abstractmethod(funcobj):
|
||||
"""A decorator indicating abstract methods.
|
||||
|
||||
|
@ -124,6 +129,9 @@ class ABCMeta(type):
|
|||
if subclass in cls._abc_cache:
|
||||
return True
|
||||
subtype = type(instance)
|
||||
# Old-style instances
|
||||
if subtype is _InstanceType:
|
||||
subtype = subclass
|
||||
if subtype is subclass or subclass is None:
|
||||
if (cls._abc_negative_cache_version ==
|
||||
ABCMeta._abc_invalidation_counter and
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue