python 的 duck type

Python跟Ruby一样,都是崇尚所谓Duck Typing的,也就是说,对于一个对象来说,它“是”什么类型的不重要,是不是支持某些操作才重要。解释器本身在编译时和运行时都不检查对象类型,只到运行时才直接执行所调用的方法,只要“它叫起来像鸭子,走起来像鸭子,那它就是鸭子”。 

但是在做企业应用的时候,目前流行的方法是造一堆又一堆的framework。本质上造framework并不是很pythonic的做法,因为Python崇尚的是轻薄短小,简单直接。不过在面向特定企业开发领域的DSL还没有出现之前,快速开发企业应用时,framework还是有效的工具。所以Python也不得不造一些framework。比如Twisted,比如Zope,比如PEAK。 

凡是用过所谓面向对象的framework的人都知道那是怎么回事:framework里定义一堆interfaces,让用户去extend,以便和framework里预定义好的其他对象合作。因此,给予类型检查的interface的概念在object oriented frameworks里就非常重要。可偏偏Python的duck typing根本就没有把类型检查这个东西当回事,因此写起framework来就很成问题。 

事实上,不少大型的python framework,都以某种方式引入了interface,比如Twisted和Zope引入了Zope.Interface,而PEAK定义了PyProtocol,本质上都是在模拟C++/Java中的类型检查。 

GvR想在Python中内置一种机制,使得各个框架作者不必另起炉灶自制一个模拟的类型检查机制。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值