
看看泛型在 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)) 感觉这是在往静态语言演化啊
1 RIcter 2015-05-24 10:49:25 +08:00 via iPad 感觉和 swift 好像了… |
2 unity0703 2015-05-24 11:23:01 +08:00 想不明白,动态类型语言要范型干嘛 |
3 unity0703 2015-05-24 11:31:14 +08:00 |
4 Septembers 2015-05-24 11:36:55 +08:00 via Android @unity0703 有点看不明白Python的 类型系统 了 |
5 davidlau 2015-05-24 12:02:27 +08:00 @Septembers 想做动静态语法都兼容,任由开发者选择,用于不同目的的系统开发? |
6 LPeJuN6lLsS9 2015-05-24 12:41:04 +08:00 幸好没有引入新关键词之类的东西,可以当它不存在。但是Cython之类扩展的“类型语法”和这个很不同,是不是会兼容这边呢…… |
7 poke707 2015-05-24 12:51:10 +08:00 via Android 不要像2 to 3要么不用要么强行妥协就可了 像c++四大派也各玩各的互不影响 |
8 cbsw OP 对现有代码没有任何影响,但新项目可以利用这个特性做一些类型检查,IDE 之类的用这个特性效率、准确性应该都会提高不少。 @poke707 未来怎么演化就难说了 @Livid 从 /new 入口发帖忘了选节点了,/new 默认是问答节点?能不能帮忙移到 /go/programmer 或 /go/python |
12 fy 2015-05-24 17:44:00 +08:00 这很好啊,便于解释器分析和代码补全 |
13 kongkongyzt 2015-05-24 18:55:35 +08:00 非常好啊!很喜欢 |
14 hjie 2015-05-25 08:51:59 +08:00 看起来不优雅 |
15 cbsw OP 与 java annotation 功能差不多 |