Как добавить подсказку к типу "класс" в Python - PullRequest
1 голос
/ 02 ноября 2019
# Java
public <T> T findById(String id, Class<T> clazz)

Как тип Class<T> в приведенной выше сигнатуре метода Java должен быть представлен подсказкой типа Python?

# Python
def find_by_id(id: str, clazz: ???) -> T

1 Ответ

4 голосов
/ 02 ноября 2019

Чтобы аннотировать тип самого класса, используйте Type.

from typing import Type

class AClass(object):
    pass

def a_function(a_string: str, a_class: Type[AClass]) -> None:
    pass

Поскольку класс является типом, имя класса может быть самой аннотацией:

def a_class_factory(a_class: Type[AClass], *args, **kwargs) -> AClass:
    return a_class(*args, **kwargs)
...