SORU
8 Mayıs 2011, Pazar


parametreleri ile python dekoratörler

Değişken aktarımı 'dekoratör tarafından. insurance_mode ile ilgili bir sorun var Aşağıdaki dekoratör deyimi ile yapardım:

 @execute_complete_reservation(True)
 def test_booking_gta_object(self):
     self.test_select_gta_object()

ama ne yazık ki, bu deyimi çalışmıyor. Belki de bu sorunu çözmek için iyi bir yoldur belki de.

def execute_complete_reservation(test_case,insurance_mode):
    def inner_function(self,*args,**kwargs):
        self.test_create_qsf_query()
        test_case(self,*args,**kwargs)
        self.test_select_room_option()
        if insurance_mode:
            self.test_accept_insurance_crosseling()
        else:
            self.test_decline_insurance_crosseling()
        self.test_configure_pax_details()
        self.test_configure_payer_details

    return inner_function

CEVAP
8 Mayıs 2011, Pazar


def test_booking_gta_object kastettin, değil mi? Neyse, biraz farklı argümanlar ile dekoratör ile mimar sözdizimi, bir işlevi dönmelidirbir işlevve başka bir işlevi döndürür. Gerçekten normal bir dekoratör dönmelidir. Biraz kafa karıştırıcı, değil mi? Demek istiyorum

def decorator(argument):
    def real_decorator(function):
        def wrapper(*args, **kwargs):
            funny_stuff()
            something_with_argument(argument)
            function(*args, **kwargs)
            more_funny_stuff()
        return wrapper
     return real_decorator

Bu konuda daha fazla okuyabilirsiniz Here - aynı zamanda bunu uygulamak için değil, aynı zamanda orada açıklandığını çağrılabilir nesneleri kullanarak.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Juan Carlos Candela Bordera

    Juan Carlos

    4 Mart 2009
  • KittiesMama

    KittiesMama

    10 AĞUSTOS 2008
  • VvCompHelpvV

    VvCompHelpvV

    4 EYLÜL 2007