SORU
6 AĞUSTOS 2008, ÇARŞAMBA


İşlevi'Python adı s ile bir dizeden bir modülün bir işlevi çağırmadan

Ne gibi bir fonksiyonu Python programında işlevin adını içeren bir dize verilen arama hakkında gitmek için en iyi yoldur. Örneğin, foo, "bar" olan bir dize var bir modül var. foo.bar() arama hakkında gitmek için en iyi yolu nedir?

Sadece eval kullanmıyorum bu yüzden işlevin dönüş değeri almak istiyorum. Ben anladım nasıl kullanarak eval tanımlamak için bir temp işlevi döndüren sonucu bu işlev çağrısı, ama umuyorum ki bir daha şık olanı bu.

CEVAP
6 AĞUSTOS 2008, ÇARŞAMBA


Yöntem bar modülü foo varsayarsak:

import foo
methodToCall = getattr(foo, 'bar')
result = methodToCall()

Bu gittiği kadar, ve 3 satır 2 için sıkıştırılmış olabilir:

result = getattr(foo, 'bar')()

kullanmanız durumunda daha mantıklı. Bağımlı yöntemler, modül düzeyinde yöntemleri, sınıf yöntemleri sınıf örneği bu şekilde getattr kullanabilirsiniz... liste uzayıp gidiyor.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AmeriiK_HD

    AmeriiK_HD

    16 AĞUSTOS 2012
  • Fubar Protocol

    Fubar Protoc

    21 AĞUSTOS 2010
  • JTechTalk

    JTechTalk

    11 Temmuz 2010