SORU
29 Mayıs 2010, CUMARTESİ


Nasıl setattr diyebilir miyim() geçerli modül?

Ben ilk parametre olarak geçirmek ne "object" işlevi, geçerli modül değişkenlerini ayarlamak için setattr(object, name, value),?

Örneğin:

setattr(object, "SOME_CONSTANT", 42);

aynı etkiyi veren:

SOME_CONSTANT = 42

modül bu satırları içeren (object doğru ile) içinde.

Modül düzeyinde çeşitli değerleri dinamik olarak oluşturmak çalışıyorum, ve modül düzeyinde __getattr__ bulamadım, bu benim geri dönüş.

CEVAP
29 Mayıs 2010, CUMARTESİ


import sys

thismodule = sys.modules[__name__]

setattr(thismodule, name, value)

veya, setattr kullanmadan soru harf dizileri ama aynı pratik amaçlar karşılayan (; -):

globals()[name] = value

Not: modülü kapsamında, ikinci eşdeğerdir:

vars()[name] = value

hangisi biraz daha kısa, ama çalışmıyor içinden bir işlev (vars() verir değişkenleri kapsamında adı: modülün değişkenlerin zaman denilen küresel kapsamı, ve daha sonra TAMAM kullanacağını R/W, ama işlevin değişkenleri zaman adlı bir fonksiyon, ve öyleyse tedavi olarak R/O -- Python online docs olabilir biraz kafa karıştırıcı bu konuda belirli ayrım).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ElChakotay Andrich

    ElChakotay A

    10 EKİM 2013
  • Mr. H

    Mr. H

    1 Temmuz 2012
  • SuppressedStorm

    SuppressedSt

    11 AĞUSTOS 2013