```py from typing import Self, ClassVar class Foo: instance: ClassVar[Self] @classmethod def get_instance(cls) -> Self: return cls.instance # error: Incompatible return value type (got "Foo", expected "Self") [return-value] @classmethod def get_instance2(cls) -> Self: return cls.get_instance() # no error ``` [playground](https://mypy-play.net/?mypy=latest&python=3.11&flags=show-error-context%2Cshow-error-codes%2Cstrict%2Ccheck-untyped-defs%2Cdisallow-any-decorated%2Cdisallow-any-expr%2Cdisallow-any-explicit%2Cdisallow-any-generics%2Cdisallow-any-unimported%2Cdisallow-incomplete-defs%2Cdisallow-subclassing-any%2Cdisallow-untyped-calls%2Cdisallow-untyped-decorators%2Cdisallow-untyped-defs%2Cno-implicit-reexport%2Clocal-partial-types%2Cstrict-equality%2Cwarn-incomplete-stub%2Cwarn-redundant-casts%2Cwarn-return-any%2Cwarn-unreachable%2Cwarn-unused-configs%2Cwarn-unused-ignores%2Cno-implicit-optional&gist=36ac32afde11986577dc84aa0e920476)
Activity
Allow new-style self-types in classmethods (python#17381)