2020 年了,各位拥抱 Python 的类型注释了么?

2020-05-09 11:06:15 +08:00
 guyeu

知乎上有个几年前的问题,那时候不用 type hint 的原因主要有以下几点:

2020 年的今天,上述的有些问题应该已经没了,剩下的问题是不是依然阻碍使用 type hint 呢?

7640 次点击
所在节点    Python
46 条回复
niubee1
2020-05-09 14:06:31 +08:00
有个很扯的问题,我要返回类本身的时候,会报错,那么就是说我不能定义链式调用咯,太扯了
TransAM
2020-05-09 14:08:20 +08:00
类型标注只支持类,不支持协议。比如 list 协议和 list 类是不一样的,标成 list 类就会频繁崩溃。
cominghome
2020-05-09 14:20:01 +08:00
试用过一段时间,感觉就是个高级注释,对我来说没啥用。。。
guyeu
2020-05-09 14:26:07 +08:00
@niubee1 #21 可以标注为 Type[ClassName]或者 Callable 类型
guyeu
2020-05-09 14:27:15 +08:00
@TransAM #22 没懂这个协议指的是啥。。。它标注的是变量、参数和返回值的类型,这个协议如果是一种类型就可以。
6ugman
2020-05-09 15:34:01 +08:00
@TransAM 是支持各种鸭子“协议”,比如你需要 typing.Sequence
rockyou12
2020-05-09 16:05:30 +08:00
对我这样的 java 写了好多年,才开始学 python 的很有用。特别是看课程给的代码,我都要自己给加上类型再写一遍,不然真的记不住有些什么 api……
Drahcir
2020-05-09 16:52:45 +08:00
准备开始规范化使用类型标注。
是一个代码风格的问题,开始会觉得挺麻烦,但熟悉以后对代码质量有很大帮助。
当然还有规范化注释也很重要。
wzw
2020-05-09 17:52:55 +08:00
我直接转 go 了
Trim21
2020-05-09 17:54:47 +08:00
@niubee1 #21 把类型用引号包起来就行了
scorn
2020-05-09 17:54:53 +08:00
我都用 python 还写个什么静态类型
fox0001
2020-05-09 17:56:43 +08:00
我拥抱 go[狗头]
lights
2020-05-09 18:08:22 +08:00
弱类型一时爽,重构火葬场
superrichman
2020-05-09 18:12:13 +08:00
没有,不如一句注释来的直观。
都用 python 了,不想搞静态语言那套东西
zhustec
2020-05-09 18:13:00 +08:00
一直没搞懂指向自身类型该怎么写

```python
class Node:
value: int
prev: ??
next: ??
```
labulaka521
2020-05-09 18:34:51 +08:00
拥抱不了转 go 了
BaseVariable
2020-05-09 18:43:23 +08:00
@dayeye2006199 老哥,好像 pyre 和 mypy 是做类型检查的吧,哪个可以自动加类型注释呢?
no1xsyzy
2020-05-09 18:51:33 +08:00
dataclass + dacite 写舒服了
其他地方不用,但碰到 JSON API 要解析只用注解来解析。
no1xsyzy
2020-05-09 18:52:46 +08:00
@zhustec #35

class Node:
value: int
prev: 'Node'
next: 'Node'

确实很诡异,注解里写上字符串是 Forward Reference
要字符串本身的话需要 Literal['Node'] 这样(>=3.8 )
zhustec
2020-05-09 18:57:21 +08:00
@no1xsyzy

这样写也太丑了

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

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

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

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

© 2021 V2EX