Class
Daha önceden rakamları tanımladığımız integer (int) ya da yazılar tanımladığımız string (str) gibi tipler birer sınıftır. Bu sınıflar gibi bizde kendi sınıflarımızı tanımlayabiliriz. Nasıl fonksiyonları tanımlarken def
anahtar sözcüğünü kullanıyorsak, sınıf tanımlarken ise class
anahtar sözcüğünü kullanırız.
Sınıflar gerçek hayattaki nesneleri bilgisayar ortamına aktarmamızı sağlar. Örneğin insan tipinde bir sınıf oluşturursak. Gerçek hayatta bir insanın isim özelliği var. Bu özellik bilgisayar ortamına aktarırken aşağıdaki gibi tanımlanır, bu yapıya attribute
yani özellik denir. Insanların bizim bildiğimiz ve bilemediğimiz özellikleri olur. Mesela bir insana bakarak bay - bayan olduğunu söyleyebiliriz ama bir insana bakarak adını bilemeyiz. Bu özelliklere private attribute
yani gizli özellik denir. Bir özelliği gizli yapmak için bu özelliğin başına __
karakterlerini ekleriz. Mesela isim özelliğini private yapmak için __isim
olarak tanımlarız. Bu şekilde tanımladıktan sonra sınıfın dışından bu özelliğe ulaşamayız.
Her insanın gerçek hayatta fonksiyonları vardır. Örneğin insanlar nefes alır-verir, yürür, koşar vs. bu fonksiyonları normal bir fonksiyon tanımlar gibi bir sınıfın içine tanımlarız. Sınıf içinde tanımlanan fonksiyonlara method
ismi verilir.
Mesela yürüme metodu olan bir insan sınıfını aşağıdaki gibi tanımlayıp, kullanabiliriz.
class Insan():
def yuru(self):
print("yuruyorum")
i = Insan()
i.yuru()
Mesela gizli isim özelliği olan bir insan oluşturup bu insanın adını bilemediğimiz için ismini sorma metodu ekleyebiliriz.
class Insan():
__isim = "Türkalp"
def adimiEkranaYaz(self):
print("Merhaba benim adım: ", self.__isim)
i = Insan()
i.adimiEkranaYaz()
Özellikler gibi metodlarda gizli olabilir. Aynı şekilde bir metodun private
olmasını istiyorsak özellik tanımlarken kullandığımız gibi metod tanımlarken de metodun isminin başına __
karakterlerini ekleriz.
Örneğin bir insanın gizli özelliği olarak TC kimlik numarası olsun. Eğer tc kimlik numarasını söyleyen bir metodu olmasını istersek bunu private
bir metod olarak tanımlamamız daha doğru olur. Yoksa herkes bize ismimizi sorar gibi TC kimlik numaramızı sorarak TC kimlik numaramızı öğrenebilir. Private bir metod aşağıdaki gibi tanımlanabilir.
class Insan():
__tcKimlik = "00000000000"
def __tcKimlikNumaramiEkranaYaz(self):
print("Merhaba benim tc kimlik numaram: ", self.__tcKimlik)
Bu şekilde gizli bir metoda bu sınıfın dışından ulaşılamaz.
init Özel Metodu
__init__
metodu bir nesne oluşturulurken otomatik olarak çalıştırılması gereken metodlar ya da fonksiyonları çalıştıran ve değişkenlere ilk değerin atanması gerektiğinde bu değerlerin atanmasını sağlayan özel bir metod olarak bilinir.
Örneğin yukarıda tanımladığımız insan sınıfı için her insan nesnesi oluşturulduğunda isim
özelliği olarak Türkalp
öntanımlı olarak geliyor. Ancak gerçek hayatta bir insanın ismi yoktur, doğduğunda insana isim verilir. Bu modellemeyi __init__
metodu yardımıyla yaparız.
class Insan():
__isim = ""
def __init__(self, yeniIsim):
self.__isim = yeniIsim
def adimiEkranaYaz(self):
print("Merhaba benim adım: ", self.__isim)
i = Insan("Burak")
i.adimiEkranaYaz()
Artık Insan
sınıfını sadece türkalp isimli bir insan için değil, ismini sonradan parametre olarak verdiğimiz burak
için de kullanabiliriz.
self
Bir sınıf içerisinde, bu sınıfın özellik ya da metodlarını kullanırken self
anahtar kelimesi kullanılır.
class Insan():
__isim = ""
cinsiyet = ""
def __init__(self, yeniIsim, cinsiyet):
self.__isim = yeniIsim
self.cinsiyet = cinsiyet
def adimiEkranaYaz(self):
print("Merhaba benim adım: ", self.__isim)
degisken = Insan("Burak", "Bay")
degisken.adimiEkranaYaz()