我想让Foo成为一个不可变对象。当我延伸' foo我想得到一个新的Foo实例。我希望输入类似的提示:
class Foo(object):
def extend(self, item:str) -> Foo:
pass
这看起来不对,但IntelliJ并不同意。我在第二行的Foo下面得到一个红色下划线。错误消息为:未解决的参考' Foo' 。
我有点理解它的说法:我们正在解析第2行,我们还没有Foo这个对象,所以翻译不知道Foo是什么手段。
但奇怪的是,这个非常不满意的替代方案对PyCharm来说已经足够了(但无效的python):
class Foo(object):
def extend(self, item:str) -> Foo_:
pass
Foo_ = Foo
那么有一种有效的方法吗?如何在类型提示注释中说明特定方法返回一个新的self实例。 class ?
我在最新版本的IntelliJ和PyCharm插件上使用Python 3.5。