Ошибка синтаксиса на аннотации типа

есть такой код с синтаксической ошибкой:

from typing import List, Dict, Any, Optional, Union    

class Message:
    def __init__(self):
        self.a: Dict[str, Any] = {}
        self.b: List[Dict[str, Any]] = []
        self.c: List[Dict[str, Any]] = []
              ^
SyntaxError: invalid syntax

Я так понимаю, дело в версии питона. Помогите переделать на валидную версию для python3.5


Ответы (2 шт):

Автор решения: V-Mor

Не совсем то, что нужно, но нужные типы атрибутам присваиваются:

from typing import List, Dict, Any, Optional, Union    

class Message:
    def __init__(self):
        self.a = {'' : Any}
        self.b = [{'' : Any}]
        self.c = [{'' : Any}]

mes = Message()

print(type(mes.a)) # <class 'dict'>
print(type(mes.b)) # <class 'list'>
print(type(mes.c)) # <class 'list'>

Это всё, что удалось изобрести для Python версии до 3.6. Начиная с 3.6, аннотация типов, которую Вы используете, поддерживается.

Обратите внимание, что при таком подходе в списках и словаре уже есть по одному элементу после инициализации.

→ Ссылка
Автор решения: insolor

Для версий Python старше 3.6 можно использовать аннотации типа в комментариях:

from typing import List, Dict, Any, Optional, Union


class Message:
    def __init__(self):
        self.a = {}  # type: Dict[str, Any]
        self.b = []  # type: List[Dict[str, Any]]
        self.c = []  # type: List[Dict[str, Any]]


message = Message()
message.a = 1

При проверке через mypy покажет ошибку:

example.py:12: error: Incompatible types in assignment (expression has type "int", variable has type "Dict[str, Any]")
Found 1 error in 1 file (checked 1 source file)
→ Ссылка