Python type hint 被 PEP 接受了

2015-05-24 10:38:18 +08:00
 cbsw

pep-0484

看看泛型在 Python 中怎么玩:

from typing import TypeVar, Generic

T = TypeVar('T')

class LoggedVar(Generic[T]):
    def __init__(self, value: T, name: str, logger: Logger) -> None:
        self.name = name
        self.logger = logger
        self.value = value

    def set(self, new: T) -> None:
        self.log('Set ' + repr(self.value))
        self.value = new

    def get(self) -> T:
        self.log('Get ' + repr(self.value))
        return self.value

    def log(self, message: str) -> None:
        self.logger.info('{}: {}'.format(self.name message))

感觉这是在往静态语言演化啊

5300 次点击
所在节点    Python
15 条回复
RIcter
2015-05-24 10:49:25 +08:00
感觉和 swift 好像了…
unity0703
2015-05-24 11:23:01 +08:00
想不明白,动态类型语言要范型干嘛
unity0703
2015-05-24 11:31:14 +08:00
@unity0703 看原文中说目的有三点
1、静态分析和重构
2、运行时类型检查
3、利用类型信息进行代码生成(也就是范型?)
这真是要往静态语言演化了
Septembers
2015-05-24 11:36:55 +08:00
@unity0703 有点看不明白Python的 类型系统 了
davidlau
2015-05-24 12:02:27 +08:00
@Septembers 想做动静态语法都兼容,任由开发者选择,用于不同目的的系统开发?
LPeJuN6lLsS9
2015-05-24 12:41:04 +08:00
幸好没有引入新关键词之类的东西,可以当它不存在。但是Cython之类扩展的“类型语法”和这个很不同,是不是会兼容这边呢……
poke707
2015-05-24 12:51:10 +08:00
不要像2 to 3要么不用要么强行妥协就可了
像c++四大派也各玩各的互不影响
cbsw
2015-05-24 14:08:32 +08:00
对现有代码没有任何影响,但新项目可以利用这个特性做一些类型检查,IDE 之类的用这个特性效率、准确性应该都会提高不少。
@poke707 未来怎么演化就难说了
@Livid 从 /new 入口发帖忘了选节点了,/new 默认是问答节点?能不能帮忙移到 /go/programmer/go/python
Livid
2015-05-24 14:11:50 +08:00
@cbsw 如果没有选的话,默认是 /go/new

现在已经移动到 /gp/python
cbsw
2015-05-24 14:12:29 +08:00
@Livid 哇,神速啊,谢谢!
poke707
2015-05-24 14:38:30 +08:00
@cbsw 恩,现在想到的是,有了这个看别人代码时会很有帮助
fy
2015-05-24 17:44:00 +08:00
这很好啊,便于解释器分析和代码补全
kongkongyzt
2015-05-24 18:55:35 +08:00
非常好啊!很喜欢
hjie
2015-05-25 08:51:59 +08:00
看起来不优雅
cbsw
2015-05-25 19:18:26 +08:00
与 java annotation 功能差不多

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

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

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

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

© 2021 V2EX