У меня есть что-то вроде следующего:
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.