Примеры использования аннотации типов#

ignore-missing-imports#

mypy --ignore-missing-imports example_04_class_basessh.py

Отложенное вычисление аннотаций типов#

Примечание

Работает в Python 3.7+ с импортом __future__

Использование имени класса в аннотации внутри этого же класса:

from __future__ import annotations
import ipaddress


class IPAddress:
    def __init__(self, ip: str) -> None:
        self.ip = ip

    def __add__(self, other: int) -> IPAddress:
        ip_int = int(ipaddress.ip_address(self.ip))
        sum_ip_str = str(ipaddress.ip_address(ip_int + other))
        return IPAddress(sum_ip_str)

Опциональный аргумент#

from typing import Union, List, Optional


def check_passwd(username: str, password: str, min_length: int = 8,
                 check_username: bool = True,
                 forbidden_symbols: Union[List, None] = None) -> bool:
                 #forbidden_symbols: Optional[List] = None) -> bool:
    if len(password) < min_length:
        print('Пароль слишком короткий')
        return False
    elif check_username and username in password:
        print('Пароль содержит имя пользователя')
        return False
    else:
        print(f'Пароль для пользователя {username} прошел все проверки')
        return True