代码改变世界

IronPython小事记

2005-07-28 11:55  FantasySoft  阅读(1198)  评论(2编辑  收藏
        前天收到IronPython Team发来的邀请函,大致内容是说:O'Reilly Open Source Convention将于8月1日至8月5日在波特兰举行。届时,Jim Hugunin将与会做两次演讲,一次是长达三个小时的IronPython Tutorial,而另一次则是不到一个小时的IronPython 1.0的简单介绍。面对这样诱人而遥远的技术盛宴,我只能看着直咽口水了。
        自从加入到IronPython在GotDotNet的Workspace后,除了submit几个bug之外,一直都鲜有贡献。不过我倒也没事偷着乐,毕竟,IronPython的进步也是来源于不断的bug fix啊。对于最新的IronPython 0.7.6,我也submit了一个bug。你可以在I
nteractive Mode下键入如下代码以重现这个bug:

>>> list = []
>>> for method in
 dir(list):
     print getattr(list, method)
   

在 一长串正常的输出之后,最终抛出了System.NotImplementedException。也许有些朋友对于Python的语法并不是太熟悉,我 就先来解释一下上面的三行代码。第一行代码中的变量list在赋值之后,其类型为Python的基本类型的一种:List;第二行代码中的dir方法返回 一个List,这个List中则包含了List类型(参数list本身就是List类型)所有可用方法的列表。在第二行代码中,你还可以看到Python 语法中唯一的代码分隔符号——冒号(:);第三行代码中的getattr方法则返回List类型中每一个方法的属性。同时,在第三行代码中,你也可以看到 Python所特有的通过缩进(indent)来区分code block。一开始,我认为是方法getattr的错。最后仔细想了一下,问题还是出在List类型的方法的列表中:方法列表中包含了还没有 implement的方法,从而导致了Exception的抛出。
        IronPython 0.7.6发布到现在已经一个多月了,我想0.7.7的发布也不会远了,热切期待中。