Takip et

SimpleDelegator ile Basit Dekoratörler

SimpleDelegator ile Basit Dekoratörler

Python’da dekoratörler, fonksiyonların veya metodların davranışlarını değiştirmek için güçlü bir araçtır. Ancak karmaşık dekoratörler yazmak bazen zorlayıcı olabilir. Bu yazıda, Python’ın SimpleDelegator sınıfını kullanarak, daha temiz ve anlaşılır dekoratörler oluşturmanın basit bir yolunu göstereceğim. Bu yöntem özellikle birden fazla fonksiyonu aynı anda süslemek istediğinizde oldukça kullanışlıdır.

Öncelikle, SimpleDelegator’ın ne olduğunu kısaca açıklayalım. SimpleDelegator, başka bir nesnenin özelliklerine ve metodlarına kolayca erişim sağlayan bir nesnedir. Bu sayede, dekoratörümüzün temel fonksiyonelliğini SimpleDelegator’a devrederek, kodumuzu daha okunabilir ve daha az karmaşık hale getirebiliriz.

SimpleDelegator ile Dekoratör Örneği

Şimdi, bir örnekle SimpleDelegator’ı kullanarak bir dekoratör oluşturalım. Diyelim ki, fonksiyon çağrılarını loglamak için bir dekoratör istiyoruz. Aşağıdaki kod bloğu, bu işlemi SimpleDelegator kullanarak nasıl gerçekleştirebileceğimizi göstermektedir:


from functools import wraps
from simple_delegator import SimpleDelegator

def logger_decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        print(f"Fonksiyon çağrıldı: {func.__name__}")
        result = func(*args, **kwargs)
        print(f"Fonksiyon sonucu: {result}")
        return result
    return wrapper

class LoggedFunction(SimpleDelegator):
    def __init__(self, func):
        super().__init__(func)

    def __call__(self, *args, **kwargs):
        print(f"Fonksiyon çağrıldı: {self.__wrapped__.__name__}") #self.__wrapped__ ile orijinal fonksiyona eriştik
        result = self.__wrapped__(*args, **kwargs)
        print(f"Fonksiyon sonucu: {result}")
        return result


@logger_decorator
def toplama(x, y):
    return x + y

@LoggedFunction
def carpma(x, y):
    return x * y


print(toplama(2, 3))
print(carpma(2, 3))

Bu örnekte, logger_decorator fonksiyonu, çağrılan fonksiyonun adını ve sonucunu ekrana yazdırır. LoggedFunction sınıfı ise SimpleDelegator’ı kullanarak aynı işlemi daha temiz bir şekilde gerçekleştirir. İki fonksiyonun da çıktısı aynıdır, ancak LoggedFunction kullanımı daha düzenli ve okunabilirdir. Burada önemli bir nokta ise self.__wrapped__ ile orijinal fonksiyona erişim sağlamaktır. Bu, SimpleDelegator’ın sağladığı bir özelliktir.

Avantajlar ve Uygulama Alanları

SimpleDelegator ile yazılmış dekoratörlerin başlıca avantajı, kodun daha okunabilir ve daha kolay anlaşılır olmasıdır. Özellikle karmaşık dekoratörler yazarken, bu avantaj oldukça belirgin hale gelir. Ayrıca, birden fazla fonksiyonu aynı anda süslemek istediğinizde de SimpleDelegator kullanmak işinizi oldukça kolaylaştırır. Örneğin, birden çok fonksiyonunuzun performansını ölçmek veya hata yönetimini tek bir noktada yönetmek isteyebilirsiniz. Bu gibi durumlarda SimpleDelegator ile yazılmış genel amaçlı dekoratörler kullanmak kodunuzu daha düzenli tutmanıza yardımcı olur.

Sonuç olarak, Python’da SimpleDelegator kullanarak basit ve etkili dekoratörler oluşturabilirsiniz. Bu, kodunuzun kalitesini artırmanıza ve daha sürdürülebilir bir kod tabanı oluşturmanıza yardımcı olacaktır. Daha fazla Python geliştirme ipucu ve makalesi için Fatih Soysal’ın web sitesini ziyaret edebilirsiniz.

Umarım bu makale faydalı olmuştur. Herhangi bir sorunuz veya öneriniz varsa, lütfen yorumlarda belirtmekten çekinmeyin.

#Etiketler: Python, SimpleDelegator, dekoratör, fonksiyonel programlama, programlama, kodlama, yazılım, SimpleDelegator ile dekoratörler, Python dekoratörleri, fonksiyon süsleme

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.