Sınıflar

Sınıf kullanımları

November 1, 2018 - 3 minute read -
code example

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()