top of page

BİLGİSAYAR BİLİMİ KUR 1 - 2. DÖNEM 16. HAFTA - NESNE YÖNELİMLİ PROG. - SİHİRLİ METODLAR

Güncelleme tarihi: 2 Nis

Ü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'daki sihirli metotlar (magic methods), özel bir işleve sahip olan ve çift alt çizgi (__) ile başlayan metotlardır. Nesne yönelimli programlamada (OOP) kullanılırlar ve nesnelerle belirli işlemleri yapmak için otomatik olarak çağrılırlar.



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



Nesne Oluşturma ve Temsil


  1. init (Başlatıcı metot)


    Bir nesne oluşturulduğunda çağrılır.













  1. str (String temsili)


print(obj) kullanıldığında çalışır.



🔹 str metodu, print(obj) veya str(obj) çağrıldığında nesnenin nasıl görüneceğini belirler.


🔹 Normalde bir nesneyi print() ile yazdırdığında Python, bellek adresini döndürür, ama str tanımlanırsa daha anlamlı bir çıktı verir.



str Olmadan Ne Olur?


Eğer str metodu yoksa, nesneyi print() ile yazdırmak şöyle bir çıktı üretir:



Bu bellek adresi, insan tarafından okunamaz. Python, dosyadaki tüm kodu çalıştırır ama "ana program" gibi davranmaz. Yani, modül sadece fonksiyonları, sınıfları ve değişkenleri içerir. Bu durumda, name değişkeni modülün adı ile eşleşir.


Ama str tanımlanırsa daha anlamlı bir çıktı verir.













  1. repr (Geliştirici temsili)


repr(obj) çağrıldığında çalışır.


🔹 repr(obj) çağrıldığında çalışır.


🔹 Nesnenin teknik, geliştirici dostu bir temsilini döndürür.




repr Olmadan Ne Olur?


Eğer repr tanımlamazsak, Python varsayılan olarak bellek adresiyle bir çıktı üretir:



Bu bellek adresi programcılar için bile pek anlamlı değil.













str ile repr Farkı

Özellik

str

repr

Amaç

Kullanıcı dostu çıktı

Geliştirici dostu çıktı














Aritmetik İşlemler


Python'da +, -, *, / gibi operatörler, varsayılan olarak sayılar, diziler ve bazı yerleşik veri türleri için çalışır. Ancak, kendi oluşturduğunuz sınıflarda bunları kullanabilmek için özelleştirme yapılması gerekir. Örneğin + operatörünü kullanabilmek için add metodunu tanımlamanız gerekir.



  1. add (+ operatörü)


    Nesneleri toplamak için kullanılır.














  1. sub (- operatörü)
















  1. mul ( operatörü)*
















Karşılaştırmalar


  1. eq (== operatörü)













  1. lt (< operatörü) ve gt (> operatörü)

















Eleman Erişimi


  1. getitem (İndeksleme işlemi için)



  • print(sinif[0]) yazınca Python, otomatik olarak getitem metodunu çağırır.

  • self.ogrenciler[0] döndüğü için "Ahmet" sonucu alırız.












  1. setitem (İndeks değiştirme işlemi için)



  • sinif[1] = "Fatma" yazınca Python, otomatik olarak setitem metodunu çağırır.

  • self.ogrenciler[1] = "Fatma" kodu çalışır ve "Mehmet", "Fatma" olur.












Özet

Sihirli Metot

Görevi

init

Nesne oluşturulduğunda çalışır

str

print(obj) çağrıldığında nesneyi metin olarak döndürür

repr

repr(obj) çağrıldığında nesneyi geliştirici dostu biçimde döndürür

add

+ operatörüyle toplama işlemi yapar

sub

- operatörüyle çıkarma işlemi yapar

mul

* operatörüyle çarpma işlemi yapar

eq

== ile eşitlik karşılaştırması yapar

lt

< ile küçük mü karşılaştırması yapar

gt

> ile büyük mü karşılaştırması yapar

getitem

obj[indeks] ile eleman almayı sağlar

setitem

obj[indeks] = yeni_deger ile eleman değiştirmeyi sağlar














Magic Methods (Sihirli Metodlar) Özet Video:



















Magic Methods (Sihirli Metodlar) Alıştırmaları:



1. init Metodu


Bir Araba sınıfı oluşturun. Araba sınıfının her bir nesnesi marka ve model bilgilerine sahip olsun. Nesne oluşturulduğunda, bu bilgileri içeren bir çıktı versin.









2. str Metodu


Bir Kişi sınıfı oluşturun. Bu sınıfın her bir nesnesinde isim ve yaş bilgileri olsun. Nesneyi print() ile yazdırdığınızda, "Adı: <isim>, Yaşı: <yaş>" formatında bir çıktı verin.














3. repr Metodu


Bir Kitap sınıfı oluşturun. Bu sınıfın her nesnesi isim ve yazar bilgilerine sahip olsun. repr() fonksiyonunu kullanarak kitap bilgilerini geliştici dostu formatta döndürün.















4. add Metodu


Sayı sınıfı oluşturun ve add metodu ile toplayın.













5. sub Metodu


Bir Nokta sınıfı oluşturun. Bu sınıfın nesneleri x ve y koordinatlarına sahip olsun. İki nokta arasındaki farkı - operatörü ile hesaplayacak bir sub metodu yazın.














6. mul Metodu


Bir Vektör sınıfı oluşturun. Bu sınıfın nesneleri x ve y bileşenlerine sahip olsun. * operatörü ile bir vektörü bir sayı ile çarpacak bir mul metodu yazın.














7. eq Metodu


Bir Daire sınıfı oluşturun. Bu sınıfın nesneleri yarıçap değerine sahip olsun. == operatörü ile iki dairenin eşit olup olmadığını karşılaştıracak bir eq metodu yazın.
















8. lt Metodu


Bir Öğrenci sınıfı oluşturun. Öğrencilerin not bilgileri bulunsun. < operatörü ile iki öğrencinin notlarının karşılaştırılmasını sağlayacak bir lt metodu yazın.
















9. gt Metodu


Bir Sayı sınıfı oluşturun. Bu sınıfın nesneleri değer bilgisi tutsun. > operatörü ile iki sayının karşılaştırılmasını sağlayacak bir gt metodu yazın.















10. getitem ve setitem Metotları


Bir Koleksiyon sınıfı oluşturun. Bu sınıfın nesnesi bir liste tutsun. obj[indeks] ile eleman almayı ve obj[indeks] = yeni_deger ile eleman değiştirmeyi sağlayan getitem ve setitem metotları yazın.

















Magic Methods (Sihirli Metodlar) Alıştırma Çözümleri Özet Video:



















Ödev:


Bir Dizi sınıfı oluşturun ve bu sınıfta getitem ve setitem magic metodlarını tanımlayın.


Görev:


  1. Dizi sınıfını tanımlayın. Bu sınıfta init, getitem ve setitem metodlarını yazın.

  2. Bu metodların, dizinin belirli indekslerine erişim ve atama işlemlerini nasıl gerçekleştirdiğini gözlemleyin.

  3. 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









Yorumlar


bottom of page