SORU
17 EKİM 2008, Cuma


' ____ al s değil'beklendiği gibi çalışmıyor Python

Noktalı bir adı ile __import__ kullanırken, bir şey gibi: somepackage.somemodule, modül döndürülen çoğunlukla boş görünüyor döndü her neyse ... somemodule,. burada neler oluyor?

CEVAP
17 EKİM 2008, Cuma


__import__: python belgeleri

__import__( name[, globals[, locals[, fromlist[, level]]]])

...

Adı değişkeni formun olduğunda paket.modülü, normal olarak, üst düzey ismin kadar paket nokta ilk değil döndürülür modül adı. Ancak, ne zaman bir argüman verilir fromlist boş olmayan, modül adı verilir. Bu uyumluluk için yapılır bayt kodu için oluşturulan alma deyimi farklı; kullanarak "spam alma.jambon."yumurta üst düzey paketi spam yerleştirilmelidir ithal ad, ama ne zaman "spam.ham ithal yumurta", spam.jambon subpackage için kullanılmalıdır yumurta değişken bulmak. Bir olarak bu davranış için çözüm kullanın () getattr istenen ayıklamak için bileşenleri. Örneğin, sen-ebil aşağıdaki yardımcı tanımlayın:

def my_import(name):
    mod = __import__(name)
    components = name.split('.')
    for comp in components[1:]:
        mod = getattr(mod, comp)
    return mod

Yorumlamak için:

somepackage.somemodule, __import__ sormak için zaman verir genelde boş olan somepackage.__init__.py,.

Eğer sağlarsanız somemodule döner fromlist (aslında değil döndürülen somemodule istediğiniz, içinde değişken bir isim listesi)

Ayrıca benim yaptığım gibi, onlar önermek işlevini kullanabilirsiniz.

Not: bu soruya tam cevap vermek niyetinde sordum kendime. Orada büyük bir hata kodumu olması yanlış tanı konur, aldı beni bir uzun zaman için bir yolunu bul, bu kadar iyi olacağını düşündüm yardım BÖYLECE toplum ve post yakaladım rastladım burada.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jeb Corliss

    Jeb Corliss

    17 Kasım 2006
  • Propaganda Time

    Propaganda T

    19 EYLÜL 2010
  • TheFlashCentre

    TheFlashCent

    22 Mayıs 2008