python通过类名创建对象_动态⽣成类实例的⽅法根据类名
(python实现)
python作为脚本语⾔根据类名字符⽣成类实例⾮常简单,类似java的Class.forName
python是⼀个脚本语⾔,它不象java⼀样有⼀个专门的包来处理反射。以 下是我们来看看python是怎么做到类似java⼀样的反射功能的。我在⽹上搜了⼀下,因为在⽹上没有很明确的⽂章说要怎么做,所以,我写了这篇,希望 新⼿不要向我⼀样⾛弯路,因为是新⼿,所以,我在这⾥没能考虑到异常的处理。
-、动态加载类
说到动态的加载类,那就不得不说,动态的加态模块。因为只能成功的加模了模块才能加载到类。我们可以⽤,以下的代码来动态的加载类
#modulePath是模块⽂件的路径+模块的⽂件名。
aMod = dules[modulePath]
python转java代码当我们动态的加载了这个模块后,我们就可以从这个模块中取得你要的类了,感觉上这个⽅法有点像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下来看看
开⼼洋葱 , 版权所有⼁如未注明 , 均为原创⼁未经授权请勿修改 , 转载请注明动态⽣成类实例的⽅法根据类名(python实现)!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论