В mypy, какую сигнатуру типа я пишу для функции, которая принимает тип и что-то такого типа в качестве аргумента? - PullRequest
0 голосов
/ 22 января 2020

У меня есть это:

def gradient_descent(
  ...
  model_class: Type[Model],
  J: Callable[[np.ndarray, model_class], float],
  ...
):

Я хочу, чтобы эта функция принимала класс, а также функцию, которая принимает экземпляр этого класса. Тем не менее, это дает мне ошибку Name "model_class" is not defined.. Я предполагаю, что это потому, что mypy не имеет доступа к model_class во время проверки типов.

Есть ли способ достичь этого?

1 Ответ

1 голос
/ 23 января 2020

Я думаю, вы ищете generi c type , например:

T = TypeVar('T', bound=Model) 

def gradient_descent(
  ...
  model_class: Type[T],
  J: Callable[[np.ndarray, T], float],
  ...
):
...