«python-decorators» etiketlenmiş sorular

Python'da dekoratörler, özel bir sözdizimi kullanarak işlevleri, yöntemleri veya sınıfları uygun şekilde değiştiren işlevlerdir. Dekoratörler, dekore edilen kaynak kodunu değiştirmeden işlevselliği dinamik olarak değiştirir.


17
Fonksiyon dekoratörleri zinciri nasıl yapılır?
Python'da aşağıdakileri yapacak iki dekoratörü nasıl yapabilirim? @makebold @makeitalic def say(): return "Hello" ... geri dönmesi gereken: "<b><i>Hello</i></b>" HTMLGerçek bir uygulamada bu şekilde yapmaya çalışmıyorum - sadece dekoratörlerin ve dekoratör zincirinin nasıl çalıştığını anlamaya çalışıyorum.

14
@Property dekoratör nasıl çalışır?
Yerleşik işlevin nasıl çalıştığını anlamak istiyorum property. Beni şaşırtan şey, propertydekoratör olarak da kullanılabilmesidir, ancak dekoratör olarak kullanıldığında değil, yalnızca yerleşik bir işlev olarak kullanıldığında argümanları alır. Bu örnek belgelerden alınmıştır : class C(object): def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def …



5
Kendi kendine argümanları olan sınıf yöntemi dekoratörü?
Bir sınıf alanını bir sınıf yöntemindeki bir dekoratöre bağımsız değişken olarak nasıl iletirim? Yapmak istediğim şey şuna benzer: class Client(object): def __init__(self, url): self.url = url @check_authorization("some_attr", self.url) def get(self): do_work() self.urlDekoratöre geçmek için benliğin var olmadığından şikayet eder . Bunun bir yolu var mı?

10
Python'da özellik özelliğinin nasıl kullanılacağına dair gerçek dünya örneği?
@propertyPython'da nasıl kullanacağımla ilgileniyorum . Python belgelerini okudum ve oradaki örnek, bence, sadece bir oyuncak kodu: 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 _xMülk dekoratörü ile doldurulmuştan ne kadar …

5
Bir Python dekoratörüne fazladan argümanları nasıl iletirim?
Aşağıdaki gibi bir dekoratörüm var. def myDecorator(test_func): return callSomeWrapper(test_func) def callSomeWrapper(test_func): return test_func @myDecorator def someFunc(): print 'hello' Bu dekoratörü aşağıdaki gibi başka bir argümanı kabul edecek şekilde geliştirmek istiyorum def myDecorator(test_func,logIt): if logIt: print "Calling Function: " + test_func.__name__ return callSomeWrapper(test_func) @myDecorator(False) def someFunc(): print 'Hello' Ama bu kod …

1
Dekoratör yürütme emri
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() Çıktı: "<b><i>hello world</i></b>" Çoğu örnekte dekoratörleri ve bunlardan biriyle nasıl çalıştığını kabaca anlıyorum. Bu örnekte 2 tane var. Çıktıdan, o …

5
Dekoratör ile python fonksiyon tanımını nasıl atlayabilirim?
Küresel ayarlara (örneğin OS) dayalı Python fonksiyon tanımını kontrol etmenin mümkün olup olmadığını bilmek istiyorum. Misal: @linux def my_callback(*args, **kwargs): print("Doing something @ Linux") return @windows def my_callback(*args, **kwargs): print("Doing something @ Windows") return Sonra, birisi Linux kullanıyorsa, my_callback kullanılır ve ikincisi sessizce göz ardı edilir. Bu işletim sistemi belirlemekle …
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.