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程序设计有所帮助。