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

  • Digital Bounds

    Digital Boun

    19 Temmuz 2013
  • dirkgently1

    dirkgently1

    13 NİSAN 2006
  • JTechTalk

    JTechTalk

    11 Temmuz 2010