Python 返回 self 时类型应该怎么写?

2020-04-20 17:51:44 +08:00
 xiaoming1992
class Parent:
	def getSelf(self) -> "Parent":
    	return self


class Child(Parent):
	# 这儿继承 Parent 类, self.getSelf 应当返回"Child", 但是类型提示中仍然是"Parent"
    # 难道每一个继承 Parent 类的, 都要重新声明 getSelf 函数吗?
	# ...
	def getSelf(self) -> "Child":
    	return self

3955 次点击
所在节点    Python
27 条回复
calease
2020-04-21 06:56:15 +08:00
@Acebiu
java 是因为不支持 keyword argument 才有建造者模式。
python 有 keyword argument,弄建造者模式是 over engineering 。
lizytalk
2020-04-21 09:10:59 +08:00
用引号包起来就行了
InkStone
2020-04-21 09:38:31 +08:00
@xiaoming1992 type hint 其实就是把函数当静态类型来推理,一个函数只能有一种返回值,那自然就是父类类型。至于实际返回的对象是什么类型,这是另外一回事。这个 type hint 确实没错,只是它跟你的理解不太一样。
xiaoming1992
2020-04-21 09:48:37 +08:00
@InkStone 我只是看到,同样的代码,ts 里面的类型推断是正确的,但是 py 不正确,所以希望看看有没有什么方法能实现
bnm965321
2020-04-21 09:52:36 +08:00
是 Pycharm IDE 提示不正确,还是 mypy typecheck 不正确?
chenxytw
2020-04-21 19:18:01 +08:00
@xiaoming1992 没针对你的问题啦....你这个问题我也不知道....也是进来学习的 Orz....
xiaoming1992
2020-04-21 21:54:57 +08:00
@bnm965321 vscode python 插件的智能提示

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/664368

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX