Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in die Methode zum dynamischen Laden von Paketen in Python

Detaillierte Einführung in die Methode zum dynamischen Laden von Paketen in Python

高洛峰
高洛峰Original
2017-03-04 16:42:011538Durchsuche

Das Beispiel in diesem Artikel fasst die Methode zum dynamischen Laden von Paketen in Python zusammen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Es gibt drei Möglichkeiten, Module dynamisch zu laden

1. Verwenden Sie die Systemfunktion __import_. ()

stringmodule = __import__('string')

2. Imp-Modul verwenden

import imp 
stringmodule = imp.load_module('string',*imp.find_module('string'))
imp.load_source("TYACMgrHandler_"+app.upper(), filepath)

3 . Verwenden Sie exec

import_string = "import string as stringmodule"
exec import_string

Ob die Variable existiert

1. t')
2 . 'var' in locals().keys()
3. 'var' in dir()
4 🎜>

Attribute dynamisch hinzufügen

class Obj(object):
  pass
def main():
  list=["a","b", "c"]
  for i inrange(1,len(list),2):
    Obj = type('Obj',(),{list[i]:lambdaself,s:obj.__setattr__(s.split(" = ")[0],s.split(" = ")[1])})
  obj =Obj()
  for i inrange(0,len(list),2):
    obj.__setattr__(list[i],list[i])  
  obj.a =1
  obj.b("a =2")
  obj.b("c =3")
  printobj.a
  printobj.c
if __name__ == '__main__':
  main()

Dynamisches Ladepaket:

def test(s,e):
  print s
  print e
class C():
  def __init__(self,name):
    print name
  def test(self):
    print 'class!!!'

Ladecode:

class Dynload():
  def __init__(self,package,imp_list):
    self.package=package
    self.imp=imp_list
  def getobject(self):
    return __import__(self.package,globals(),locals(),self.imp,-1)
  def getClassInstance(self,classstr,*args):
    return getattr(self.getobject(),classstr)(*args)  
  def execfunc(self,method,*args):
    return getattr(self.getobject(),method)(*args)
  def execMethod(self,instance,method,*args):
    return getattr(instance,method)(*args)
#Test:
dyn=Dynload('util.common',['*'])
ins=dyn.getClassInstance('C','gao')
dyn.execMethod(ins,'test')
dyn.execfunc('test','Hello','function!')

Laden Die angegebene Datei basierend auf ihrem Namen
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn