Path: blob/master/Nesne Tabanlı Programlama/Nesne Tabanlı Programlama - Özel Metodlar.ipynb
765 views
Nesne Tabanlı Programlama - Özel Metodlar
Nesne tabanlı programlamada son olarak sınıfların özel metodlarını nasıl kendimiz yazarız öğrenmeye çalışalım. Özel metodlar, daha önceden de bahsettiğimiz gibi bizim özel olarak çağırmadığımız ancak her classa ait metodlardır. Bunların çoğu biz tanımlamasak bile Python tarafından varsayılan olarak tanımlanır. Ancak bu metodların bazılarını da özel olarak bizim tanımlamamız gerekmektedir. Daha önceden gördüğümüz init metodu bu metodlara bir örnektir. Bu konuda bu metodlarını nasıl tanımlayacağımızı öğrenmeye çalışacağız. Şimdi örneklerimize geçelim.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-66-5f5391921a08> in <module>()
----> 1 len(kitap1) # __len__ metodu çağrılacak ancak tanımlı değil. Bunu özellikle bizim tanımlamamız gerekiyor.
TypeError: object of type 'Kitap' has no len()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-69-361ccf2f9d6d> in <module>()
----> 1 kitap1
NameError: name 'kitap1' is not defined
Şimdi buradaki metodları kendimiz nasıl tanımlayacağız öğrenmeye çalışalım.
init metodu
init metodunu kendimiz tanımlarsak artık kendi init fonksiyonumuz çalışacaktır.
str metodu
Normalde print(kitap1) ifadesi ekrana şöyle bir yazı yazdırıyor.
Ancak eğer str metodunu kendimiz tanımlarsak artık ekrana kitap1 in içeriğini daha anlaşılır yazabileceğiz.
len metodu
len metodu normalde özel olarak biz tanımlamazsak tanımlanan bir metod değil. Onun için bu metodu kendimiz tanımlamamız gereklidir.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-77-ab6b326ab715> in <module>()
----> 1 len(kitap1)
TypeError: object of type 'Kitap' has no len()
del metodu
del metodu Pythonda bir objeyi del anahtar kelimesiyle sildiğimiz zaman çalıştırılan metoddur. Bu metodu kendimiz tanımlayarak ekstra özellikler ekleyebiliriz.
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-87-361ccf2f9d6d> in <module>()
----> 1 kitap1
NameError: name 'kitap1' is not defined
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-96-361ccf2f9d6d> in <module>()
----> 1 kitap1
NameError: name 'kitap1' is not defined
Siz de bunlar gibi çoğu özel metodu ihtiyacınız olduğu zaman kendiniz yazabilirsiniz. Özel metodlar için güzel bir ingilizce kaynak için şuradan faydalanabilirsiniz.