Heim > Backend-Entwicklung > Python-Tutorial > 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

高洛峰
Freigeben: 2017-03-04 16:42:01
Original
1575 Leute haben es durchsucht

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')
Nach dem Login kopieren

2. Imp-Modul verwenden

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

3 . Verwenden Sie exec

import_string = "import string as stringmodule"
exec import_string
Nach dem Login kopieren

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()
Nach dem Login kopieren

Dynamisches Ladepaket:

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

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!')
Nach dem Login kopieren

Laden Die angegebene Datei basierend auf ihrem Namen
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage