python中反射用法实例
本文实例讲述了python中反射用法。分享给大家供大家参考。具体如下:
importsys,types,new def_get_mod(modulePath): try: aMod=sys.modules[modulePath] ifnotisinstance(aMod,types.ModuleType): raiseKeyError exceptKeyError: #Thelast['']isveryimportant! aMod=__import__(modulePath,globals(),locals(),['']) sys.modules[modulePath]=aMod returnaMod def_get_func(fullFuncName): """Retrieveafunctionobjectfromafulldotted-packagename.""" #Parseoutthepath,module,andfunction lastDot=fullFuncName.rfind(u".") funcName=fullFuncName[lastDot+1:] modPath=fullFuncName[:lastDot] aMod=_get_mod(modPath) aFunc=getattr(aMod,funcName) #Assertthatthefunctionisa*callable*attribute. assertcallable(aFunc),u"%sisnotcallable."%fullFuncName #Returnareferencetothefunctionitself, #nottheresultsofthefunction. returnaFunc def_get_Class(fullClassName,parentClass=None): """Loadamoduleandretrieveaclass(NOTaninstance). IftheparentClassissupplied,classNamemustbeofparentClass orasubclassofparentClass(orNoneisreturned). """ aClass=_get_func(fullClassName) #AssertthattheclassisasubclassofparentClass. ifparentClassisnotNone: ifnotissubclass(aClass,parentClass): raiseTypeError(u"%sisnotasubclassof%s"% (fullClassName,parentClass)) #Returnareferencetotheclassitself,notaninstantiatedobject. returnaClass defapplyFuc(obj,strFunc,arrArgs): objFunc=getattr(obj,strFunc) returnapply(objFunc,arrArgs) defgetObject(fullClassName): clazz=_get_Class(fullClassName) returnclazz() if__name__=='__main__': aa=getObject("inetservices.services.company.Company") bb=applyFuc(aa,"select",['select*fromngsys2',None]) printbb
希望本文所述对大家的Python程序设计有所帮助。