神奇的动态语言
一直对动态语言很好奇,却一直没有正式用过动态语言的动态特性。用的最多的还是把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
>>>
今天看到一个关于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 阅读(411) 评论(0) 编辑 收藏 举报