Как правильно сделать аннотацию *args, **kwargs и self
Как правильно сделать аннотацию аргументов *args, **kwargs и self?
И надо ли делать их вообще, или всем и так понятно?
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Для self аннотация не нужна (и так очевидно, что тип self - это класс, в котором объявлен метод).
Для *args и **kwargs указывайте тип передаваемых значений, пример:
from typing import List, Mapping
def function(*args: int, **kwargs: int):
pass
function(1, 2, '3', a=1, b='asdasd')
При проверке с помощью mypy покажет ошибки несоответствия типов на аргументах, через которые передана строка вместо целого числа:
anno.py:8: error: Argument 3 to "function" has incompatible type "str"; expected "int"
anno.py:8: error: Argument "b" to "function" has incompatible type "str"; expected "int"
Found 2 errors in 1 file (checked 1 source file)
Документация: PEP 484, раздел "Arbitrary argument lists and default argument values"