Как создать экземпляр типа указанного в дженерике?

class Cat[T]:
    def __init__(self):
      self.prop = T()

Ответы (1 шт):

Автор решения: insolor

Вариант через передачу фабрики (функции) для значения prop:

from typing import Callable


class Cat[T]:
    prop: T

    def __init__(self, prop_factory: Callable[[], T]) -> None:
        self.prop = prop_factory()


cat = Cat(str)

Дополнительно указывать str в квадратных скобках (типа cat = Cat[str](str)) не нужно (излишне), тайп чекеры и так определят тип T по типу возвращаемого значения переданной фабрики.

→ Ссылка