Pytania otagowane jako python-decorators

W Pythonie dekoratory to funkcje, które w wygodny sposób zmieniają funkcje, metody lub klasy przy użyciu specjalnej składni. Dekoratory dynamicznie zmieniają funkcjonalność bez zmiany dekorowanego kodu źródłowego.


17
Jak zrobić łańcuch dekoratorów funkcji?
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.

14
Jak działa dekorator @property?
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 …

12
Co robi symbol „at” (@) w Pythonie?
Patrzę na jakiś kod Pythona, który używał tego @symbolu, ale nie mam pojęcia, co on robi. Nie wiem też, czego szukać, ponieważ wyszukiwanie dokumentów w języku Python lub Google nie zwraca odpowiednich wyników, gdy ten @symbol jest dołączony.


5
Dekorator metody klasowej z argumentami własnymi?
Jak przekazać pole klasy do dekoratora w metodzie klasy jako argument? To, co chcę zrobić, to coś takiego: class Client(object): def __init__(self, url): self.url = url @check_authorization("some_attr", self.url) def get(self): do_work() Narzeka, że ​​jaźń nie istnieje do przekazania self.urldekoratorowi. Czy jest na to sposób?

10
Przykład z prawdziwego świata, jak korzystać z właściwości w Pythonie?
Interesuje mnie, jak używać @propertyw Pythonie. Przeczytałem dokumentację Pythona, a przykład tam, moim zdaniem, to tylko kod zabawki: class C(object): def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x Nie wiem, jakie korzyści …

5
Jak przekazać dodatkowe argumenty do dekoratora Pythona?
Mam dekoratora jak poniżej. def myDecorator(test_func): return callSomeWrapper(test_func) def callSomeWrapper(test_func): return test_func @myDecorator def someFunc(): print 'hello' Chcę ulepszyć ten dekorator, aby zaakceptował inny argument, jak poniżej def myDecorator(test_func,logIt): if logIt: print "Calling Function: " + test_func.__name__ return callSomeWrapper(test_func) @myDecorator(False) def someFunc(): print 'Hello' Ale ten kod daje błąd, TypeError: …

1
Zlecenie wykonania dekoratora
def make_bold(fn): return lambda : "<b>" + fn() + "</b>" def make_italic(fn): return lambda : "<i>" + fn() + "</i>" @make_bold @make_italic def hello(): return "hello world" helloHTML = hello() Wynik: "<b><i>hello world</i></b>" Z grubsza rozumiem o dekoratorach i jak to działa z jednym z nich w większości przykładów. W …

5
Jak ominąć definicję funkcji python za pomocą dekoratora?
Chciałbym wiedzieć, czy można kontrolować definicję funkcji Pythona w oparciu o ustawienia globalne (np. System operacyjny). Przykład: @linux def my_callback(*args, **kwargs): print("Doing something @ Linux") return @windows def my_callback(*args, **kwargs): print("Doing something @ Windows") return Następnie, jeśli ktoś używa Linuksa, zostanie zastosowana pierwsza definicja, my_callbacka druga zostanie po cichu zignorowana. …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.