Python'da decorator tasarım deseni, bir işlevi veya nesneyi dinamik olarak genişletmek veya değiştirmek için kullanılan bir desenidir. Python, bu tasarım desenini uygulamak için iyi bir dildir. Decorator desenini uygulamak için aşağıdaki adımları izleyebilirsiniz:
1. İlk olarak, bir temel işlev veya nesne tanımlayın. Bu, dekore edilecek olan temel işlev veya nesnedir.
2. Ardından, dekorasyon işlevlerini (decorators) tanımlayın. Bu işlevler, temel işlevi veya nesneyi genişleten veya değiştiren işlevlerdir.
3. Dekorasyon işlevlerini kullanarak, temel işlevi veya nesneyi dekore edin. Bu işlevleri kullanarak temel işleve veya nesneye ek özellikler veya davranışlar ekleyebilirsiniz.
İşte basit bir örnek:
# Temel işlevimiz
def greeting(name):
return f"Merhaba, {name}!"
# Decorator işlevleri
def uppercase_decorator(func):
def wrapper(name):
result = func(name)
return result.upper()
return wrapper
def exclamation_decorator(func):
def wrapper(name):
result = func(name)
return f"{result}!"
return wrapper
# Temel işlevimizi dekore ediyoruz
greet_decorated = exclamation_decorator(uppercase_decorator(greeting))
# Dekore edilmiş işlevi kullanma
print(greet_decorated("Alice")) # Çıktı: "MERHABA, ALICE!"
Yukarıdaki örnekte, `greeting` adlı temel işlevimizi `uppercase_decorator` ve `exclamation_decorator` adlı decorator işlevleriyle dekore ettik. `greet_decorated` adlı yeni bir işlev oluşturduk ve bu işlevi çağırdığımızda temel işlevi dekore edilmiş haliyle çağırdık.
Python'da decorator deseni, işlevlerinizi veya nesnelerinizi genişletmek veya özelleştirmek için güçlü bir araçtır. Ayrıca, `@decorator` sözdizini ile daha okunaklı ve kullanışlı bir şekilde decorator işlevlerini uygulayabilirsiniz.