Дано
class A:
pass
class B:
pass
Если я определяю новый тип ACallback
, который принимает экземпляр A
from typing import Callable
ACallback = Callable[[A], None]
И определяю функцию, которая принимает экземпляр B
def b_callback(b: B):
pass
Если я пытаюсь использовать b_callback
там, где ожидается ACallback
, я получаю предупреждения о подсказках типа - как и ожидалось.
def test(callback: ACallback):
pass
test(the_callback) # <-- "Expected type '(A) -> None', got '(b: B) -> None` instead
Однако, если я создаю декораторкоторый принимает ACallback
def test2(callback: ACallback):
def decorate(f):
def new_f(*args, **kwargs):
return f(*args, **kwargs)
return new_f
return decorate
и передает функцию, которая не соответствует
@test2(the_callback) # <-- No type hint errors
def decorator_test():
pass
Я не вижу предупреждений о подсказках типов.
Вопрос: Отсутствует ли предупреждение о подсказке типа из-за ...
- Ошибки подсказки типа?
- Ограничения подсказки типа Python?
- Ограничения подсказок типа PyCharm?
- Что-то еще?