结合代码论述Python的动态执行 下载本文

名称

dir(aClass)

我们得到这些属性的名称后,可以用上面得到class 的方法来获得这个对象里的所有属性 举例说明方法改变: (1)方法添加 class Fruit(object): pass

def add(self): print \

if __name__ == \ Fruit.grow = add fruit = Fruit() fruit.grow() (2)方法更新 class Fruit(object): pass

def update(self): print \

if __name__ == \ Fruit.grow = update fruit = Fruit() fruit.grow() (4)、动态运行方法

动态的运行方法,我们也非常的方便,因为python是脚本语言。 apply(objFunc,arrArgs)

代码中objFunc是用getAttr从实例化后的对象中取得到function,而arrArgs是我们的参数,和javascript一样,他是数组一样的对象。 p = aclass(\

相当于直接使用p = sites.sitespybuild.sitespybuild(\五.、函数的动态调用

关键点在于python中一切都是对象 def method1(self,A=None): …print \

def method2(self,B=None): …print \

def method3(self,C=None): …print \ controllers = {

'keyword1':method1, 'keyword2':method2, 'keyword3':method3 }

def callfunc(self,funcname=None,params=None): …func = self.controllers.get(funcname, None) …return func(self,params)

参数动态传入,关键点在于使用字典型对象。

如上例,如果method1中需要传入复杂对象A,method2中需要传入复杂对象A,B,

一个办法可以搞定,都传入字典型对象,把A,B放到字典型参数params中进行传递即可。 参考文献:

《Python源码剖析》 陈儒 电子工业出版社 《Python学习手册》 Mark Lutz 机械工业出版社