如下代码内容是关于python根据类名动态生成类实例的方法的代码,应该对码农也有好处。
#modulePath是模块文件的路径+模块的文件名。
aMod = sys.modules[modulePath]
当我们动态的加载了这个模块后,我们就可以从这个模块中取得你要的类了,感觉上这个方法有点像java中从类中反射出方法。下以的代码可以
aClass= getattr(aMod, className)
二、动态实例化类
得到了class对象之后,在python就可以很方便的得到他的对像,以下这代码
obj = new.instance(aClass)
三、得到对象、类或模块中的所有属性方法
在java的反射中我们可以得到对象中的所有属性和方法,在python中,因为是脚本语言,所以我们要得到这个些属性方法更加的方便,我们可以用以下的代码获得类,对象,模块中的所有的属性的名称
dir(aClass)
我们得到这些属性的名称后,可以用上面得到class的方法来获得这个对象里的所有属性
四、动态运行方法
动态的运行方法,我们也非常的方便,因为python是脚本语言,感觉起来很象javascript的方式来调用方法。
apply(objFunc,arrArgs)
代码中objFunc是用getAttr从实例化后的对象中取得到function,而arrArgs是我们的参数,和javascript一样,他是数组一样的对象。
有了这些方法,我们就可以做和java反射一样做的事了,我在网上找到了一个模块,小改了一下,使得用这个模块可以很方便的用类名实例化一个实例和运行这个实例中的方法,如果大家需要可以down下来看看
网友评论