thanks all first. but i had one class bellow to get object info what user had inputed when run application. because the problem that i had showed yestoday, i must write the code so hard to understand. can any friend tell me one way to solve this problem? thanks!! list:
import inspect vtStd,vtIron=range(2) versionType=vtStd moduleName=None objectName=None def _functionFilter(name): #because the problem, i must write this function exec "import %s"%(moduleName,) a=getattr(eval(objectName),name) return callable(a) def _classFilter(name): #because the problem, i must write this function exec "import %s"%(moduleName,) a=getattr(eval(objectName),name) return inspect.isclass(a) def _varFilter(name): #because the problem, i must write this function exec "import %s"%(moduleName,) a=getattr(eval(objectName),name) return not(callable(a) or inspect.isclass(a)) class moduleInfo(object): def __init__(self): self.dirs=None self.moduleName=None self.objectName=None self.classes=None self.functions=None self.variants=None self.objectType=None def readContent(self,mname,name): global moduleName,objectName exec "import %s"%(mname) #because this line, can't write code like "listA not in listB" self.dirs=dir(eval(name)) self.objectType=type(eval(name)) self.dirs.sort() self.dirs=tuple(self.dirs) self.moduleName=moduleName=mname self.objectName=objectName=name self.classes=filter(_classFilter,self.dirs) self.functions=filter(_functionFilter,self.dirs) self.variants=filter(_varFilter,self.dirs) #because the problem, i can't write code like bellow: # self.variants=filter(lambda a: (a not in self.classes) and (a not in self.functions),self.dirs) return self.dirs def readHelp(self,mname,objName,memName): global moduleName,objectName exec "import %s"%(mname) s="%s.%s"%(objName,memName) shelp=str(eval("type(%s)\n"%(s,))) shelp+=str(eval("\n%s.__doc__"%(s,))) return shelp if __name__=="__main__": mi=moduleInfo() a=mi.readContent("sys","sys") print "dir:",a print "class:",mi.classes print "fun:",mi.functions print "var:",mi.variants
-- http://mail.python.org/mailman/listinfo/python-list