[New-bugs-announce] [issue44606] Discrepancy between isinstance() and issubclass() for union types

Serhiy Storchaka report at bugs.python.org
Mon Jul 12 01:33:30 EDT 2021


New submission from Serhiy Storchaka <storchaka+cpython at gmail.com>:

1. Different handling of None:

>>> isinstance(None, int | type(None))
True
>>> issubclass(type(None), int | type(None))
True
>>> isinstance(None, int | None)
True
>>> issubclass(type(None), int | None)
False

2. Different handling of virtual subclasses:

>>> import collections.abc
>>> isinstance({}, int | collections.abc.Mapping)
True
>>> issubclass(dict, int | collections.abc.Mapping)
False

I do not know what behavior is correct.

----------
components: Interpreter Core
messages: 397281
nosy: gvanrossum, serhiy.storchaka
priority: normal
severity: normal
status: open
title: Discrepancy between isinstance() and issubclass() for union types
type: behavior
versions: Python 3.10, Python 3.11

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


More information about the New-bugs-announce mailing list