[New-bugs-announce] [issue36881] isinstance raises TypeError for metaclass with metaclass=ABCMeta

Randy Eckman report at bugs.python.org
Fri May 10 22:29:04 EDT 2019


New submission from Randy Eckman <emanspeaks at gmail.com>:

>>> from abc import ABCMeta
>>> class AbstractMeta(type, metaclass=ABCMeta): pass
...
>>> class Meta1(AbstractMeta): pass
...
>>> class Meta2(AbstractMeta): pass
...
>>> class ClassA(metaclass=Meta1): pass
...
>>> isinstance(ClassA, Meta2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\miniconda\miniconda3\lib\abc.py", line 139, in __instancecheck__
    return _abc_instancecheck(cls, instance)
TypeError: __subclasscheck__() takes exactly one argument (0 given)


This is driven by the fact that the metaclass of AbstractMeta is ABCMeta; if I change its metaclass to something else that does not contain ABCMeta in the inheritance chain, isinstance returns False as expected.


Possibly related to Issue 2325?

----------
components: Interpreter Core
messages: 342152
nosy: emanspeaks
priority: normal
severity: normal
status: open
title: isinstance raises TypeError for metaclass with metaclass=ABCMeta
versions: Python 3.7

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue36881>
_______________________________________


More information about the New-bugs-announce mailing list