We've drafted a PEP for a `Self` type. This provides a painless, readable way to annotate methods and classmethods that return `self` or `cls(...)` respectively.
We found that this pattern comes up a lot in real-world code; for example, typeshed uses this around 40% as often as popular types such as Dict or Callable.