NCindy

.net平台上的高性能网络程序开发框架

神奇的动态语言

一直对动态语言很好奇,却一直没有正式用过动态语言的动态特性。用的最多的还是把javascript作为一种命令式语言来操作HTML DOM。

今天看到一个关于IronPython的录像,动态语言的强悍功能让我大为震惊。居然可以运行时为一个class增加方法/属性或者替换方法。

下面是一段在IronPython控制台中可以使用的命令脚本。

>>> def foo(self):"""定义一个方法
...     print 1
...
>>> class CTest:"""定义一个类
...    def Bar(self):
...     print 2
...
>>> t1 = CTest()"""创建一个类的实例
>>> t1.Bar()"""
2
>>> CTest.Foo = foo"""为类动态的增加一个方法
>>> t1.Foo()
1
>>> def Func1(self):
...  self.Bar()
...
>>> CTest.Func1 = Func1
>>> t1.Func1()
2
>>> t1.Func1()
2
>>> t1.a = 1"""为对象动态的增加一个属性
>>> def Func2(self):
...   print self.a
...
>>> CTest.Func2 = Func2
>>> t1.Func2()
1
>>>

posted on 2006-12-22 14:41  iceboundrock  阅读(408)  评论(0编辑  收藏  举报

导航