|
|
1
35
谢谢你阅读我的代码! 事实上,在Python中创建通用注释执行器并不困难。以下是我的看法:
考虑到这种简单性,乍一看这个东西不是主流很奇怪。然而,我相信这是有充分理由的 没有看上去那么有用 . 一般来说,类型检查很有帮助,因为如果您添加整数和字典,很可能会犯一些明显的错误(如果您的意思是合理的,则仍然是错误的) ). 正如编译器所看到的,但显然不同 ,例如,以下代码段包含一个明显的错误:
关于这个问题的可能解决方案还有很多,但强制执行“计算机类型”显然是半个解决方案,所以,至少在我看来,这是一个解决方案 比根本没有解决方案更糟糕 . 原因也是一样 匈牙利系统 这是个糟糕的主意 这是一个伟大的故事。在信息量非常丰富的网站上还有更多内容 post of Joel Spolsky .
现在,如果有人要实现某种Pythonic第三方库,它会自动分配给真实世界的数据
然后小心地把这种类型转换成
|
|
|
2
15
正如该PEP中提到的,静态类型检查是函数注释可以用于的可能应用程序之一,但它们将由第三方库决定如何进行。也就是说,在核心python中不会有正式的实现。 就第三方实现而言,有一些代码片段(例如 http://code.activestate.com/recipes/572161/ ),这项工作似乎做得很好。 编辑: 作为说明,我想提到检查行为比检查类型更可取,因此我认为静态类型检查不是一个好主意。我上面的回答是为了回答这个问题,不是因为我会用这种方式自己打字。 |
|
|
3
14
Python中的“静态类型”只能在运行时执行类型检查,这意味着它会降低应用程序的速度。因此,您不希望将其作为一个通用性。相反,您需要一些方法来检查它的输入。如果你(错误地)认为你非常需要它,这可以很容易地用简单的断言或装饰来完成。 还有一种替代静态类型检查的方法,即使用面向方面的组件体系结构,如Zope组件体系结构。不是检查类型,而是调整它。因此,不是:
您可以这样做:
如果对象已经实现IMyClass,则不会发生任何事情。否则,将查找将对象包装到IMyClass的适配器,并使用它代替对象。如果找不到适配器,则会出现错误。 这结合了Python的动态性和以特定方式拥有特定类型的愿望。 |
|
|
4
13
mypy-lang.org 当然,我们不能依赖它,因为它仍然是很小的努力,但很有趣。 |
|
|
5
0
|