Ошибка mypy: у Callable нет атрибута "__get__" - PullRequest
4 голосов
/ 30 апреля 2019

У меня есть что-то вроде следующего:

from typing import TypeVar, Callable, Generic, Type, Union, Optional

T = TypeVar("T")
V = TypeVar("V")

class DescClass(Generic[T, V]):
    """A descriptor."""
    def __init__(self, func: Callable[[T], V]) -> None:
        self.func = func

    def __get__(self, instance: Optional[T], owner: Type[T]) -> Callable[[], V]:
        return self.func.__get__(instance, owner)

class C:
    @DescClass
    def f(self): ...

... для которого Mypy вернет эту ошибку:

test.py:12: error: "Callable[[T], Any]" has no attribute "__get__"

Какой канонический способ указать тип для func, чтобы Mypy понимал, что это дескриптор ( и, следовательно, всегда имеет __get__)?

Обновление: немного смешно, что у "дескриптора" нет обращений при поиске в справке Mypy.

...