Python Sihirli Metodlar (Magic Methods)

Python Sihirli Metodlar (Magic Methods)

Tarhi : 28-02-2022 05:18:04 | Yazar : ÇAĞLAR BOSTANCI

Merhaba bu yazımda sizlerle python sinif yapısında kullanılan magic (sihirli) methodları inceleyeceğiz. Bu metodlar siz sınıf içerisinde belirli amaçlar için çalışan methodlarda diyebiliriz. Şimid öncelikle __new__ sihirli methoduna bakalım.

Python __new__ Method Kullanımı

Bu method sınıf oluşuturulurken çalışmasını istediğiniz bir sınıf veya methoda varsa bu alanda çalışabilirsiniz. Python ön yükleyicisi olarak bilinen __init__ methodunda önce çalışıyor ve sonra init methodun çalışmasını sağlıyor. Tabi bunun sorunsuz bir şekilde çalışmasını istiyorsak aşağıdaki örnekğe uyugun yapmalısınız.

__new__ methodu çağırdık ve burada *args,**kwargs parametreler sınıf yüklenirken gönderilen tüm parametreleri alarak new den sonra gelen __init__ metoduna return ile aktardık.

Python __init__ Method Kullanımı

Bildiğiniz gibi her yazılım dilinde construct ile nitelendirilen ön yükleyici methoddur. Bu method sınıf örneklenirken kendiliğinden çalışır. Ön yüklenmede yapılması gereken işler burda yapılır.

Python __del__ Metho Kullanımı

Python oluşturmuş olan bir sınıfının işlemi bittikten sonra kendiliğinden çalışan sınıftır. Bu sınıfa destructor method yani yıkıcı method olarakda kullanılabilmektedir.

Python __str__ Method Kullanımı

Oluşturulan bir sınıf ekrana basılmaya çalışıldığından kendiliğinden çalışan sınıftır.

Python __add__ Method Kullanımı

Örneklenen iki adet sınıfın toplama operatörü kullanıldığında kendiliğinden çalışan sınıftır.

Örenk olarak oluşturduğumuz iki sınıfı toplayama çalıştığımızda __add__ methodu devreye girerek iki sınıf içersindeki sayıları toplayarak geriye değer dönderdik.

Python __gt__ method Kullanımı

İki sınıf arasında >= matıksal opratör olarak kullanmamızı sağlar. Geriye true veya false değer döner

Python __ne__ method Kullanımı

Örneklemesi yapılmış İki sınıf arasında != matıksal opratör olarak kullanmamızı sağlar. Geriye true veya false değer döner

Python __eq__ method Kullanımı

Örneklemesi yapılmış İki sınıf arasında == matıksal opratör olarak kullanmamızı sağlar. Geriye true veya false değer döner

Python __le__ method Kullanımı

Örneklemesi yapılmış İki sınıf arasında <= matıksal opratör olarak kullanmamızı sağlar. Geriye true veya false değer döner

Python __lt__ method Kullanımı

Örneklemesi yapılmış İki sınıf arasında < matıksal opratör olarak kullanmamızı sağlar. Geriye true veya false değer döner

Yine aşağıdaki tabloya bakarak megic methodları inceleyebilirsiniz.

Yapıcı ve Yıkıcı Mehtodlar Açıklaması
__new__(cls) Sınıf oluşturulurken ilk çalışan method
__init__(self) Yapıcı method sınıf oluşturulduğunda çalışır
__del__(self) Yıkıcı method sınıfın işi bittiğinde çalışır
Tek operatörle çalışan metodlar Açıklaması
__pos__(self) Sınıfa artı operator eklendiğinde
__neg__(self) Sınıfa – operator eklendiğinde
__abs__(self) Mutlak değeri alındığında
__invert__(self) Tekli aritmetik işlemi bit düzeyinde NOT ~ uygular.
__round__(self,n) Round işlemi ile çağrıldığında
__floor__(self) Floor işlemi ile çağırıldığında
__ceil__(self) math.ceil() metodu kullanıldığında
__trunc__(self) math.trunc() fonksiyonu uygulandığında
İkili opretörler Description
__iadd__(self) obj += obj (+=) operatörü kullanıldığında.
__isub__(self) obj -= obj (-=) operatörü kullanıldığında.
__imul__(self) obj *= obj (*=) operatörü kullanıldığında.
__ifloordiv__(self) obj //= obj (/=) operatörü kullanıldığında.
__idiv__(self) obj /= obj (/=) operatörü kullanıldığında.
__itruediv__(self) Bölme işilme yapıdığında
__imod__(self) obj %= obj (%=) mod işlemi kullanıldığında.
__ipow__(self) obj **= obj (*=) operatörü kullanıldığında.
__ilshift__(self) obj<<=obj sol bite kaydırıldığında
__irshift__(self) obj>>=obj Bir sağ bite kaydırıldığında .
__iand__(self) obj&=obj bit düzeyinde and atama.
__ior__(self) obj|=obj bit düzeyinde or atama.
__ixor__(self) obj ^= obj bit düzeyinde XOR atam
Tür Dönüştürme işlemlerinde Açıklama
__int__(self) int() int dönüştürülmek istendiğinde.
__float__(self) float() float dönüştürülmek istendiğinde.
__complex__(self) complex() complex dönüştürülmek istendiğinde.
__oct__(self) oct() oct dönüştürülmek istendiğinde.
__hex__(self) hex() hex dönüştürülmek istendiğinde.
__index__(self) int dönüşümünde
__trunc__(self) math.trunc() metodu uygulandığında