def func(x: MyClass) -> None: # Ошибка: MyClass еще не определен
...
class MyClass:
...
from __future__ import annotations делает так, что все аннотации типов воспринимаются как строки. Это позволяет использовать поздние ссылки (на классы, которые еще не объявлены) — User.То есть Python не будет сразу требовать, чтобы MyClass уже был определен. Он просто запомнит строку
MyClass и разберется с этим позже, когда все классы уже будут объявлены.