Почему Python не позволяет использовать Generics с проверкой isinstance?Python

Программы на Python
Anonymous
Почему Python не позволяет использовать Generics с проверкой isinstance?

Сообщение Anonymous »

Выполнение приведенного ниже кода с помощью Python 3.12.4:

Код: Выделить всё

from typing import Generic, TypeVar

T = TypeVar("T")

class Foo(Generic[T]):
def some_method(self) -> T:
pass

isinstance(Foo[int](), Foo[int])
Выдается ошибка TypeError: дженерики с индексами нельзя использовать с проверками классов и экземпляров.

Код: Выделить всё

Traceback (most recent call last):
File "/path/to/a.py", line 9, in 
isinstance(Foo[int](), Foo[int])
File "/path/to/.pyenv/versions/3.12.4/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/typing.py", line 1213, in __instancecheck__
return self.__subclasscheck__(type(obj))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/path/to/.pyenv/versions/3.12.4/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/typing.py", line 1216, in __subclasscheck__
raise TypeError("Subscripted generics cannot be used with"
TypeError: Subscripted generics cannot be used with class and instance checks
Какова причина того, что Python не разрешает проверки isinstance с помощью Generic?


Подробнее здесь: https://stackoverflow.com/questions/787 ... nce-checks

Вернуться в «Python»