Press "Enter" to skip to content

Python Class

Yaşar SAFALI 0

Python Class

Bir önceki yazımızda Nesne Yönelimli Programlamaya giriş yaptık.Bu yazımızda sınıf (class) kavramına değineceğiz.Python Class Sınıflar programlama dillerinde önemli bir yer tutarlar.Nesnelerin özelliklerinin,davranışlarının tanımlandığı genel bir taslak veya şablon olarak tanımlanabilirler.Sınıflar nesnelere ait metotları,özellikleri,alanları,yapıcı metotları bünyesinde  barındırarak kendilerinden üretilen nesnelerin kullanmasını sağlarlar.Sınıfları kullanmanın en büyük avantajı kod tekrarının önüne geçmektir.Sınıflar sayesinde programlar parçalara bölünebilirler.Bu sayede okunabilirlik artar.Şimdi Python’da sınıf class tanımlamayı ve özelliklerini inceleyelim.

Class Tanımlamak:

Python’da class tanımlaması şu şekilde gerçekleşir.

class Muhendis:
    pass



veya

class Muhendis():
    pass

 

Class tanımlanırken parantez kullanıp kullanmamak programcının insiyatifine kalmıştır.

Sınıflara özellikler eklemek

Yukarıda tanımladığımız sınıfa ait herhangi bir nitelik bulunmamaktadır.Sınıfların kullanışlı olmasını sağlayan yapılar içerisinde bulunan özelliklerdir.

class Muhendis():
   adi="yazılımhanem"
   meslek="Bilgisayar Mühendisi"

Mühendis sınıfının artık adi ve meslek diye iki tane değişkeni mevcuttur.Aynı mantıkla fonksiyonlar da tanımlanabilir.Fonksiyon tanımlamaya henüz geçmeyeceğiz.Öncelikle bu sınıftaki değişkenlere erişmeyi bir sınıfı çağırmayı inceleyelim.

Bir  sınıftaki değişkenlere erişebilmenin iki farklı yolu vardır. İlk olarak Sınıf ismiyle erişebiliriz.

class Muhendis():
   adi="yazılımhanem"
   meslek="Bilgisayar Mühendisi"



print(Muhendis.adi)
print(Muhendis.meslek)

Output:

yazılımhanem
Bilgisayar Mühendisi

İkinci olarak nesne üreterek erişebiliriz.

class Muhendis():
   adi="yazılımhanem"
   meslek="Bilgisayar Mühendisi"
   
muhendis=Muhendis()

muhendis artık bizim Muhendis() sınıfından ürettiğimiz nesnemizdir.

Class içerisinde yer alan özelliklere nesneler sayesinde erişebiliriz.

class Muhendis():
    adi = "yazılımhanem"
    meslek = "Bilgisayar Mühendisi"


muhendis = Muhendis()
print(muhendis.adi)
print(muhendis.meslek)

Output:

yazılımhanem
Bilgisayar Mühendisi

 

İki farklı şekilde sınıfları çağırmayı öğrendik.Aralarındaki en temel fark bir değişkene(nesneye) atanarak çağırma işleminde mevcut sınıfın bütün özelliklerini taşıyan bir üye(nesne) oluşturulmasıdır.Silinene kadar kullanılabilmektedir.Oluşturulan nesne silinmek istendiğinde del() komutu kullanılır.

self Komutu:

Class içerisinde yer alan bütün fonksiyonların parametre olarak alması gerektiği bir yapıdır.Bir Class içerisinde yer alan fonksiyonlara,değişkenlere aynı class içerisinden erişebilmek için kullanılır.

class Muhendis():
    adi = "yazılımhanem"
    meslek = "Bilgisayar Mühendisi"
    def EkranaYaz(self):
        print(self.adi)
        print(self.meslek)

Sınıfların içerisinde fonksiyonların bulabileceğini söylemiştik.Self ifadesini anlatırken de örnek bir fonksiyon tanımlaması yaptık.Şimdi Mühendis sınıfına iki farklı fonksiyon ekleyelim. Oluşturulan nesne ile bu fonksiyonlara erişmeyi ve self komutu ile fonksiyon ve değişkene erişmeyi görelim.

class Muhendis():
    adi="yazılımhanem"
    meslek="Bilgisayar Mühendisi"
    maas=5000
    birimi="Bilgi İşlem"
    def EkranaYaz(self):
       print(self.adi)
       print(self.meslek)
       print(self.birimi)
       print(self.maas)
    def ZamYap(self,zammiktari):
        self.maas+=zammiktari
        self.EkranaYaz()
muhendis=Muhendis()
muhendis.EkranaYaz()
muhendis.ZamYap(500)

Output:

yazılımhanem
Bilgisayar Mühendisi
Bilgi İşlem
5000
yazılımhanem
Bilgisayar Mühendisi
Bilgi İşlem
5500

OOP prensiplerinden bir diğeride method overloading(Aşırı Yükleme)dir.Yani bir fonksiyonun aynı isimle birden fazla farklı parametreler için tanımlanmasıdır.Python’da bu yöntem direk olarak desteklenmez. Çünkü Python’da bir class içerisinde var olan bir fonksiyonla aynı isimde fonksiyon tanımlamak hata verir.O yüzden method overloading işlemi yapılmak istendiğinde fonksiyona parametreler varsayılan değeriyle tanımlanır.Bu sayede parametre verilmese bile fonksiyon çalışır.

Örnek:

class YazilimHanem:

    def EkranaYaz(self,isim=None):

        if isim==None:
            print("Paramtresiz Fonksiyon Çalıştı")
        else:
            print("Parametreli Fonksiyon Çalıştı",isim)

yz=YazilimHanem()
yz.EkranaYaz()
yz.EkranaYaz("Yazılım")

Output:

Paramtresiz Fonksiyon Çalıştı
Parametreli Fonksiyon Çalıştı Yazılım

 

Python’da Sınıf oluşturmak,Sınıflar üzerinde özellik ve fonksiyon olustumak,olusturulan sınıflardan nesne üretmek bu şekildedir.Son olarak sınıflara ait __init__ fonksiyonunu inceleyelim.

__init__() Fonksiyonu

Sınıflar çağrıldığı zaman yani o sınıftan bir nesne üretildiği zaman yapılacak işleri bünyesinde barındıran bir fonksiyondur.OOP’de bu tür fonksiyonlara yapıcı,inşa edici fonksiyonlar denir.

class Muhendis():
    adi="yazılımhanem"
    meslek="Bilgisayar Mühendisi"
    maas=5000
    birimi="Bilgi İşlem"
    def EkranaYaz(self):
       print(self.adi)
       print(self.meslek)
       print(self.birimi)
       print(self.maas)
    def ZamYap(self,zammiktari):
        self.maas+=zammiktari
        self.EkranaYaz()
    def __init__(self):
        print("Mühendis Sınıfı Çağrıldı")
        
muhendis=Muhendis()

Output:

Mühendis Sınıfı Çağrıldı

 

Parametreli veya parametresiz kullanımları mevcuttur.Eğer __init__ fonksiyonu parametreli oluşturulmuşsa sınıftan nesne üretilirken o parametreler girilmelidir.

class Muhendis():
    adi="yazılımhanem"
    meslek="Bilgisayar Mühendisi"
    maas=5000
    birimi="Bilgi İşlem"
    def EkranaYaz(self):
       print(self.adi)
       print(self.meslek)
       print(self.birimi)
       print(self.maas)
    def ZamYap(self,zammiktari):
        self.maas+=zammiktari
        self.EkranaYaz()
    def __init__(self,isim,meslek):
        print("Mühendis Sınıfı Çağrıldı")
        self.meslek=meslek
        self.adi=isim

muhendis=Muhendis("YazılımHanem","Bilgisayar Mühendisi")

Output:

Mühendis Sınıfı Çağrıldı

Sınıflar ile ilgili anlatacaklarımız bu kadar.Bir sonraki yazımızda görüşmek dileğiyle.

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir