Почему 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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