Проверьте общий тип данных Python - PullRequest
1 голос
/ 21 октября 2019

Для данного кода Python:

from dataclasses import dataclass
import typing


@dataclass
class Foo:
    bar: str


T = typing.TypeVar("T")


@dataclass
class Bar(typing.Generic[T]):
    items: typing.List[T]


Buz = Bar[Foo]

Как узнать с кодом Python, какой класс Buz имеет универсальный тип Foo? Существует ли метод проверки для этого?

1 Ответ

0 голосов
/ 21 октября 2019

Использование модуля typing_inspect позволяет:

import typing

import typing_inspect

T = typing.TypeVar("T")


class Gen(typing.Generic[T]):
    pass


print(typing_inspect.is_generic_type(Gen))  # True
print(typing_inspect.is_generic_type(Gen[int]))  # True
print(typing_inspect.get_args(Gen[int]))  # (<class int>,)
...