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

  • Google Developers

    Google Devel

    23 AĞUSTOS 2007
  • inovationgmbh

    inovationgmb

    28 EYLÜL 2010
  • Santozz Yazz

    Santozz Yazz

    23 Mart 2014