SORU
27 Ocak 2011, PERŞEMBE


Bir sınıfta dize adı Python dinamik örnekleme dinamik olarak ithal modülü

Python, belirli bir sınıfın örneğini oluşturmak için, bir dize, ama bu sınıf 'hayat' bir dinamik modülü içe. adını bilmek zorundayım Örnek aşağıdaki gibidir:

loader sınıfı kod:

import sys
class loader:
  def __init__(self, module_name, class_name): # both args are strings
    try:
      __import__(module_name)
      modul = sys.modules[module_name]
      instance = modul.class_name() # obviously this doesn't works, here is my main problem!
    except ImportError:
       # manage import error

-dinamycally-dolu-bazı modül komut:

class myName:
  # etc...

Bu düzenleme, bazı önceden tanımlanmış davranışları aşağıdaki loader sınıfı tarafından kullanılacak dinamik olarak yüklenen-modül dinamik olarak yüklenen modülleri... herhangi yapmak için kullanıyorum

Herhangi bir fikir takdir edilmektedir

Teşekkürler!

CEVAP
27 Ocak 2011, PERŞEMBE


getattr kullanabilirsiniz

getattr(module, class_name)

sınıf erişmek için. Daha tam kod:

module = __import__(module_name)
class_ = getattr(module, class_name)
instance = class_()

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blunty

    Blunty

    13 Mart 2006
  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008
  • Vladimir Jenko

    Vladimir Jen

    1 Mart 2010