Почему Type[T] определен как ковариантный в T?Python

Программы на Python
Anonymous
Почему Type[T] определен как ковариантный в T?

Сообщение Anonymous »

PEP 484 заявляет, что typing.Type[T] является ковариантным, т. е. для любых типов A и B B является подтипом A подразумевает, что Тип является подтипом Типа[A], что явно неверно:

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

>>> from typing import Type
>>>
>>> class A:
...     def __init__(self, x: int): pass
...
>>> t: Type[object] = A
>>> t()
Traceback (most recent call last):
File "", line 1, in 
TypeError: __init__() missing 1 required positional argument: 'x'
Каково обоснование этого решения?
Чтобы исключить описанную выше ошибку, каждый класс должен разрешить вызов __init__() без аргументов, что не поддерживается, по крайней мере, mypy. Есть ли какая-либо документация об этом исключении?

Подробнее здесь: https://stackoverflow.com/questions/757 ... riant-in-t

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