New submission from Randy Eckman <emanspe...@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 <rep...@bugs.python.org>
<https://bugs.python.org/issue36881>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to