ÜNİTE:
1.3. PROGRAMLAMA
KAZANIMLAR:
1.3.5.2. Proje geliştirme sürecinde işbirlikli olarak görev alır.
PYTHON - Magic Methods (Sihirli Metodlar)
Python'da magic methods (sihirli metodlar), özel olarak tanımlanmış yöntemlerdir ve çift alt çizgi (__) ile başlar ve biterler (örneğin, init, str). Bu yöntemler, sınıfların Python'ın dil özellikleriyle nasıl etkileşime girdiğini kontrol etmek için kullanılır. Magic metodlar sayesinde sınıflarınıza özel davranışlar kazandırabilir, Python'un yerleşik operatörlerini ve işlevlerini yeniden tanımlayabilirsiniz.
1. Nedir ve Ne İşe Yararlar?
Magic metodlar, Python'daki nesnelerin belirli durumlarda nasıl davranacağını tanımlamak için kullanılır.
Örneğin:
Bir nesne oluşturulurken (__init__).
Bir nesne yazdırılırken (__str__).
Operatörler kullanıldığında (__add__, sub, vb.).
Nesnelere dizisel erişim yapılırken (__getitem__, setitem).
2. Sık Kullanılan Magic Metodlar
a) Nesne Oluşturma ve Temsil
Bu metodlar, nesnelerin nasıl oluşturulduğunu ve temsil edildiğini kontrol eder.
Metod | Amaç |
init | Nesne oluşturulduğunda çalışır. Sınıfın başlatıcı (constructor) metodudur. |
del | Nesne yok edildiğinde çalışır (destructor). |
repr | Nesnenin geliştirici dostu temsilini döner (debug için). |
str | Nesnenin kullanıcı dostu temsilini döner (ör. print()). |
new | Yeni bir nesne yaratılmadan önce çağrılır (özelleştirilmiş yaratım işlemleri için). |
Örnek kullanım:
b) Aritmetik ve Karşılaştırma Operatörleri
Sınıflarınıza operatörlerle ilgili özel davranışlar ekleyebilirsiniz.
Metod | Operatör/İşlev |
add | + (Toplama) |
sub | - (Çıkarma) |
mul | * (Çarpma) |
truediv | / (Bölme) |
floordiv | // (Taban Bölme) |
mod | % (Mod Alma) |
eq | == (Eşitlik) |
lt | < (Küçüklük) |
gt | > (Büyüklük) |
Örnek kullanım:
c) Dizisel ve İteratif Davranışlar
Sınıflarınıza liste benzeri davranışlar kazandırabilirsiniz.
Metod | Amaç |
getitem | Bir nesneye indeksle erişim sağlar. |
setitem | Bir indekse değer atar. |
delitem | Bir indeksi siler. |
len | Nesnenin uzunluğunu döner. |
iter | Nesneyi iteratif hale getirir. |
Örnek kullanım:
d) Diğer Magic Metodlar
Metod | Amaç |
call | Bir nesneyi fonksiyon gibi çağırmayı sağlar. |
contains | in operatörünü özelleştirir. |
hash | Nesnelerin hash değerini döner (özelleştirilmiş set). |
Örnek kullanım:
3. Magic Metodların Avantajları
Kodunuzu Daha Anlaşılır Hale Getirir: Sınıfınızın davranışlarını operatörler ve yerleşik işlevlerle birleştirebilirsiniz.
Python’un Esnekliğinden Yararlanır: Nesne yönelimli programlamayı daha güçlü hale getirir.
4. İyi Uygulama Tavsiyeleri
Magic metodları yalnızca ihtiyaç duyulduğunda özelleştirin.
Kodunuzun okunabilirliğini artırmak için str ve repr gibi metotları tanımlayın.
eq, lt gibi karşılaştırma metodlarını tanımlarken birden fazla operatörün birbiriyle uyumlu çalışmasını sağlayın.
Magic Methods (Sihirli Metodlar) Özet Video:
Magic Methods (Sihirli Metodlar) Alıştırmaları:
Alıştırma 1: __init__ ve __str__ Magic Metodları
Bir Kisi sınıfı oluşturun ve init ve str magic metodlarını tanımlayın. Daha sonra bu sınıftan birkaç nesne yaratarak ve onları yazdırarak sınıfın nasıl çalıştığını gözlemleyin.
Görev:
Kisi sınıfını tanımlayın ve init metodunu, isim ve yas parametrelerini kabul edecek şekilde yazın.
str metodunu tanımlayın, bu metodun bir Kisi nesnesini uygun bir formatta döndürmesini sağlayın.
Birkaç Kisi nesnesi oluşturun ve bunları yazdırın.
Çözüm:
Alıştırma 2: __add__ Magic Metodu
Bir Nokta sınıfı oluşturun ve bu sınıfta add magic metodunu tanımlayın. Bu metod, iki noktanın toplandığında yeni bir Nokta nesnesi döndürsün.
Görev:
Nokta sınıfını tanımlayın ve init metodunu, x ve y koordinatlarını alacak şekilde yazın.
add metodunu tanımlayın, bu metod iki Nokta nesnesini alarak yeni bir nokta oluşturacak şekilde yazın.
Birkaç Nokta nesnesi oluşturun ve bu nesneler arasındaki toplama işlemini uygulayın.
Çözüm:
Alıştırma 3: __getitem__ ve __setitem__
Bir Dizi sınıfı oluşturun ve bu sınıfta getitem ve setitem magic metodlarını tanımlayın.
Görev:
Dizi sınıfını tanımlayın. Bu sınıfta init, getitem ve setitem metodlarını yazın.
Bu metodların, dizinin belirli indekslerine erişim ve atama işlemlerini nasıl gerçekleştirdiğini gözlemleyin.
Bu sınıftan bir nesne oluşturun, indeksler üzerinden erişim ve atama işlemleri yapın.
Çözüm:
Magic Methods (Sihirli Metodlar) Alıştırma Çözümleri Özet Video:
Magic Methods (Sihirli Metodlar) - Görevler
Alıştırma 1: __init__ ve __str__ Magic Metodları
Bir Kisi sınıfı oluşturun ve init ve str magic metodlarını tanımlayın. Daha sonra bu sınıftan birkaç nesne yaratarak ve onları yazdırarak sınıfın nasıl çalıştığını gözlemleyin.
Görev:
Kisi sınıfını tanımlayın ve init metodunu, isim ve yas parametrelerini kabul edecek şekilde yazın.
str metodunu tanımlayın, bu metodun bir Kisi nesnesini uygun bir formatta döndürmesini sağlayın.
Birkaç Kisi nesnesi oluşturun ve bunları yazdırın.
Alıştırma 2: __add__ Magic Metodu
Bir Nokta sınıfı oluşturun ve bu sınıfta add magic metodunu tanımlayın. Bu metod, iki noktanın toplandığında yeni bir Nokta nesnesi döndürsün.
Görev:
Nokta sınıfını tanımlayın ve init metodunu, x ve y koordinatlarını alacak şekilde yazın.
add metodunu tanımlayın, bu metod iki Nokta nesnesini alarak yeni bir nokta oluşturacak şekilde yazın.
Birkaç Nokta nesnesi oluşturun ve bu nesneler arasındaki toplama işlemini uygulayın.
Alıştırma 3: __getitem__ ve __setitem__
Bir Dizi sınıfı oluşturun ve bu sınıfta getitem ve setitem magic metodlarını tanımlayın.
Görev:
Dizi sınıfını tanımlayın. Bu sınıfta init, getitem ve setitem metodlarını yazın.
Bu metodların, dizinin belirli indekslerine erişim ve atama işlemlerini nasıl gerçekleştirdiğini gözlemleyin.
Bu sınıftan bir nesne oluşturun, indeksler üzerinden erişim ve atama işlemleri yapın.
Ödev:
Bir Dizi sınıfı oluşturun ve bu sınıfta getitem ve setitem magic metodlarını tanımlayın.
Görev:
Dizi sınıfını tanımlayın. Bu sınıfta init, getitem ve setitem metodlarını yazın.
Bu metodların, dizinin belirli indekslerine erişim ve atama işlemlerini nasıl gerçekleştirdiğini gözlemleyin.
Bu sınıftan bir nesne oluşturun, indeksler üzerinden erişim ve atama işlemleri yapın
Ouşturduğunuz kodların fotoğrafını aşağıdaki mail adresine gönderiniz.
Maile isim soy isim, sınıf ve okul numarası bilgilerinizi yazmayı unutmayınız.
egitimdebil@gmail.com
Önerilen program: IDE - PYTHON (Bilgisayarla çalışmayanlar, kodları deftere yazıp fotoğrafını gönderebilirler.)
Bilişim Teknolojileri Öğretmeni: İshak BEZCİ
Son gün ve saat : Pazar gece 12.00
تعليقات