提示返回自己类实例的方法的正确方法是什么?

Sal*_*ley 5 python intellij-idea pycharm

我想使Foo成为一个不变的对象。当我“扩展” foo时,我想获得一个Foo的新实例。我希望输入如下提示:

class Foo(object):
    def extend(self, item:str) -> Foo:
        pass
Run Code Online (Sandbox Code Playgroud)

看起来不错,但是IntelliJ并不同意。我在第二行的Foo下面得到一个红色的下划线。错误消息是:未解析的引用'Foo'

我有点明白了这是什么意思:在tyme上,我们正在解析第2行,但是我们还没有对象Foo,因此解释器不知道Foo是什么意思。

但奇怪的是,对于PyCharm(但无效的python),这个非常不令人满意的替代方法就足够了:

class Foo(object):
    def extend(self, item:str) -> Foo_:
        pass

Foo_ = Foo
Run Code Online (Sandbox Code Playgroud)

那么有没有有效的方法来做到这一点?我如何在类型提示注释中说特定方法返回新的self实例。

我在带有PyCharm插件的IntelliJ的最新版本上使用Python 3.5。