Nasıl dinamik olarak bir Python sınıf yük
Bir Python sınıf bir dizgide, my_package.my_module.MyClass
örneğin, ne yüklemek için mümkün olan en iyi yolu nedir?
Diğer bir deyişle Python eşdeğer bir Java fonksiyonu Class.forName()
arıyorum. Google App Engine üzerinde çalışmak gerekiyor.
Tercihen bu bir dize olarak sınıfın FQN kabul eder, ve bu sınıf için bir başvuru döndüren bir fonksiyon olurdu
my_class = load_class('my_package.my_module.MyClass')
my_instance = my_class()
CEVAP
Python belgelerine, burada istediğiniz işlev:
def my_import(name):
components = name.split('.')
mod = __import__(components[0])
for comp in components[1:]:
mod = getattr(mod, comp)
return mod
__import__
işe yaramaz bir paket ve basit bir dize ilk nokta son bir şey alma sebebinin aldığınız modülün bir niteliktir. Böylece, bir şey yok gibi
__import__('foo.bar.baz.qux')
Yukarıdaki gibi fonksiyonu " diyebilirsiniz
my_import('foo.bar.baz.qux')
Veya örnek:
klass = my_import('my_package.my_module.my_class')
some_object = klass()
EDİTBu kapalı bir şey değildim. Temel olarak yapmak istediğin şey:
from my_package.my_module import my_class
Yukarıdaki işlev, eğer var ise gereklidirboşfromlist. Böylece, uygun bir çağrı gibi olacaktır:
mod = __import__('my_package.my_module', fromlist=['my_class'])
klass = getattr(mod, 'my_class')
Nasıl dinamik olarak bir Python sınıf ...
Nasıl JavaScript ile dinamik olarak CS...
Nasıl dinamik olarak Python türetilmiş...
Nasıl bir C özelliklerini okuyabilir m...
Nasıl dinamik olarak bir süre döngü il...