python作为脚本语言根据类名字符生成类实例非常简单,类似java的Class.forName
python是一个脚本语言,它不象java一样有一个专门的包来处理反射。以 下是我们来看看python是怎么做到类似java一样的反射功能的。我在网上搜了一下,因为在网上没有很明确的文章说要怎么做,所以,我写了这篇,希望 新手不要向我一样走弯路,因为是新手,所以,我在这里没能考虑到异常的处理。
-、动态加载类
说到动态的加载类,那就不得不说,动态的加态模块。因为只能成功的加模了模块才能加载到类。我们可以用,以下的代码来动态的加载类
#modulePath是模块文件的路径+模块的文件名。
aMod = sys.modules[modulePath]
当我们动态的加载了这个模块后,我们就可以从这个模块中取得你要的类了,感觉上这个方法有点像java中从类中反射出方法。下以的代码可以
aClass= getattr(aMod, className)
二、动态实例化类
得到了class对象之后,在python就可以很方便的得到他的对像,以下这代码
obj = new.instance(aClass)
三、得到对象、类或模块中的所有属性方法
在java的反射中我们可以得到对象中的所有属性和方法,在python中,因为是脚本语言,所以我们要得到这个些属性方法更加的方便,我们可以用以下的代码获得类,对象,模块中的所有的属性的名称
dir(aClass)
我们得到这些属性的名称后