看看泛型在 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 功能差不多
|