注册 登录
  • 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

动态生成类实例的方法根据类名(python实现)

python 水墨上仙 3202次浏览 已收录 手机上查看

python作为脚本语言根据类名字符生成类实例非常简单,类似java的Class.forName

python是一个脚本语言,它不象java一样有一个专门的包来处理反射。以&nbsp下是我们来看看python是怎么做到类似java一样的反射功能的。我在网上搜了一下,因为在网上没有很明确的文章说要怎么做,所以,我写了这篇,希望&nbsp新手不要向我一样走弯路,因为是新手,所以,我在这里没能考虑到异常的处理。
-、动态加载类
说到动态的加载类,那就不得不说,动态的加态模块。因为只能成功的加模了模块才能加载到类。我们可以用,以下的代码来动态的加载类

#modulePath是模块文件的路径+模块的文件名。
aMod = sys.modules[modulePath]

当我们动态的加载了这个模块后,我们就可以从这个模块中取得你要的类了,感觉上这个方法有点像java中从类中反射出方法。下以的代码可以

aClass= getattr(aMod, className)

二、动态实例化类
得到了class对象之后,在python就可以很方便的得到他的对像,以下这代码

obj = new.instance(aClass)

三、得到对象、类或模块中的所有属性方法
在java的反射中我们可以得到对象中的所有属性和方法,在python中,因为是脚本语言,所以我们要得到这个些属性方法更加的方便,我们可以用以下的代码获得类,对象,模块中的所有的属性的名称

dir(aClass)

我们得到这些属性的名称后,可以用上面得到class&nbsp的方法来获得这个对象里的所有属性
四、动态运行方法
动态的运行方法,我们也非常的方便,因为python是脚本语言,感觉起来很象javascript的方式来调用方法。

apply(objFunc,arrArgs)

代码中objFunc是用getAttr从实例化后的对象中取得到function,而arrArgs是我们的参数,和javascript一样,他是数组一样的对象。
有了这些方法,我们就可以做和java反射一样做的事了,我在网上找到了一个模块,小改了一下,使得用这个模块可以很方便的用类名实例化一个实例和运行这个实例中的方法,如果大家需要可以down下来看看


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明动态生成类实例的方法根据类名(python实现)
喜欢 (0)
[开心洋葱]
分享 (0)
水墨上仙
关于作者:
水墨上仙
……