Dekorator to obiektowy wzorzec projektowy, który umożliwia dynamiczne dodawanie zachowań do istniejących klas. Jest to jeden z wzorców projektowania strukturalnego Gang of Four.
Jak mogę zrobić dwa dekoratory w Pythonie, które wykonałyby następujące czynności? @makebold @makeitalic def say(): return "Hello" ... które powinny zwrócić: "<b><i>Hello</i></b>" Nie próbuję HTMLtego zrobić w prawdziwej aplikacji - po prostu próbuję zrozumieć, jak działają dekoratorzy i łączenie dekoratorów.
Chciałbym zrozumieć, jak propertydziała funkcja wbudowana . To, co mnie dezorientuje, to fakt, że propertymożna go również używać jako dekoratora, ale wymaga tylko argumentów, gdy jest używany jako funkcja wbudowana, a nie jako dekorator. Ten przykład pochodzi z dokumentacji : class C(object): def __init__(self): self._x = None def getx(self): return …
To pytanie nie dotyczy dyskusji, czy pożądany jest wzór singletonu , jest anty-wzorem, czy jakiejkolwiek wojny religijnej, ale do omówienia, w jaki sposób ten wzór najlepiej wdrożyć w Pythonie w najbardziej pythonowy sposób. W tym przypadku definiuję słowo „najbardziej python”, co oznacza, że jest ono zgodne z „zasadą najmniejszego zdziwienia” …
W komentarzu do tej odpowiedzi na inne pytanie ktoś powiedział, że nie jest pewien, co się functools.wrapsdzieje. Zadaję więc to pytanie, aby na StackOverflow zapisano go na przyszłość: co functools.wrapsdokładnie robi ?
Patrzyłem na wzór proxy i wydaje mi się to okropnie podobne do wzorów Decorator, Adapter i Bridge. Czy coś nie rozumiem? Co za różnica? Dlaczego miałbym używać wzorca proxy w porównaniu do innych? Jak korzystałeś z nich w przeszłości w projektach z prawdziwego świata?
Mam problem z przeniesieniem zmiennej „Insurance_mode” przez dekoratora. Zrobiłbym to przez następujące oświadczenie dekoratora: @execute_complete_reservation(True) def test_booking_gta_object(self): self.test_select_gta_object() ale niestety to stwierdzenie nie działa. Być może istnieje lepszy sposób na rozwiązanie tego problemu. 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
Zamknięte. To pytanie nie jest zgodne z wytycznymi dotyczącymi przepełnienia stosu . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby było na temat przepełnienia stosu. Zamknięte 6 lat temu . Popraw to pytanie Chociaż lubię myśleć o sobie jako o dość kompetentnym kodzie Pythona, jednym z aspektów …
Otrzymuję ostrzeżenie ... Eksperymentalne wsparcie dla dekoratorów to funkcja, która może ulec zmianie w przyszłej wersji. Ustaw opcję „experimentalDecorators”, aby usunąć to ostrzeżenie. ... mimo że moje compilerOptions w tsconfig.json mają następujące ustawienia: "emitDecoratorMetadata": true, "experimentalDecorators": true, Dziwne jest to, że niektóre losowe klasy, które używają dekoratorów, nie pokazują tego …
Biorąc pod uwagę funkcję Python: def a_method(arg1, arg2): pass Jak mogę wyodrębnić liczbę i nazwy argumentów. To znaczy, biorąc pod uwagę, że mam odniesienie func, chcę func.[something]wrócić ("arg1", "arg2"). Scenariusz użycia jest taki, że mam dekorator i chcę użyć argumentów metody w tej samej kolejności, w jakiej pojawiają się dla …
Uczę się Redux z React i natknąłem się na ten kod. Nie jestem pewien, czy jest on specyficzny dla Redux, czy nie, ale widziałem następujący fragment kodu w jednym z przykładów. @connect((state) => { return { key: state.a.b }; }) Chociaż funkcjonalność connectjest dość prosta, ale nie rozumiem @wcześniej connect. …
Uczyłem się Wzorzec Dekorator co zostało udokumentowane w GOF . Proszę, pomóż mi zrozumieć Wzorzec Dekoratora . Czy ktoś mógłby podać przykład użycia, w którym jest to przydatne w prawdziwym świecie?
Kiedy próbuję użyć metody statycznej z treści klasy i zdefiniować metodę statyczną za pomocą funkcji wbudowanej staticmethodjako dekoratora, na przykład: class Klass(object): @staticmethod # use as decorator def _stat_func(): return 42 _ANS = _stat_func() # call the staticmethod def method(self): ret = Klass._stat_func() + Klass._ANS return ret Otrzymuję następujący błąd: …
Rozważ następujące: @property def name(self): if not hasattr(self, '_name'): # expensive calculation self._name = 1 + 1 return self._name Jestem nowy, ale myślę, że buforowanie można rozłożyć na dekorator. Tylko że takiego nie znalazłem;) PS rzeczywiste obliczenia nie zależą od zmiennych wartości
Więc bawię się dekoratorami w Pythonie 2.6 i mam problemy z ich uruchomieniem. Oto plik mojej klasy: class testDec: @property def x(self): print 'called getter' return self._x @x.setter def x(self, value): print 'called setter' self._x = value Pomyślałem, że oznaczało to traktowanie xjak właściwość, ale wywołanie tych funkcji podczas pobierania …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.