Python - İleri Seviye Python

Sınıflar ve Nesneler

Yayın tarihi :01-Ara-21
Bölüm kodlarını ve/veya veri setlerini indir.

Python, nesne yönelimli bir programlama dilidir. Nesne yönelimli programlama nesneler üzerinde durur. Bu nesneler bir değişken (attribute) veya fonksiyonların (methot) topluluğudur. Class'lar çok boyutlu nesneleri tanımlamak için kullanılırlar.

Kod dizimi:

class SınıfAdı():
    #satic değişkenler
    
    def __init__(self,#değişenler):
                 self.degiskenAdı=degiskenAdı
                 #...
    
    def yeniMethot1():
                 #....
                 
    def yeniMethot2():
                 #....  
  • class SınıfAdı(), class'larda isimlendirme yapılırken zorunlu değil ama büyük harfle başlanır.
  • satic değişkenler, class içerisinde tüm örneklendirmeler için sabit olan değişkenler bu alana yazılır. 
  • def __init__(self,#değişenler), eğer bir class'tan nesne üretilecekse bu alan zorunludur, class'ların yapıcı methodudur. 
  • __init__ yapısının içinde bulunan self kavramı, class içinden türetmiş olduğumuz nesnelere ulaşmamızı sağlayan bir kavramdır.
  •  def yeniMethot1(),def yeniMethot2() ..,kaç tane olduğu önemli değildir ve zorunlu bir alan olmayıp class içinde fonksiyon yazarak dışarıya aktarabildiğimiz bir yapıdır.

Daha iyi anlayabilmek için örneklere bakalım;

Örnek-1:

Bir okulda bulunan öğretmenler ve öğrencilerin kayıtlarını tutmak isteyelim bunun için 3 adet sınıf oluşturacağız. Insan, Ogretmen ve Ogrenci

  • Insan, sınıfı her öğretmen ve öğrencide olması gereken okul, isim, doğum tarihi ve email adresi bilgilerini tutacak değişkenlerinden ve güncel tarihten doğum tarihini çıkaracak bir fonksiyon olan Yaş hesaplama methotundan oluşmaktadır.

class Insan():
    okul="Ankara Ünv." #static değişken
   
    def __init__(self,isim,dogumTarihi,emailAdresi):
        self.isim=isim
        self.dogumTarihi=dogumTarihi
        self.emailAdresi=emailAdresi
    
    def yasHesaplama(self): #methot
        return 2021-self.dogumTarihi

Sınıf örneklemesi (instantiation)

Oluşturulan sınıfın genel özelliklerini barındıran alt kümeler oluşturma işlemine sınıf örneklendirmesi denir.

insan1=Insan("Enes",1989,"e@gmail.com")

Yukardaki kodda insan1 adında bir nesne (object) oluşturduk. Dikat edilirse 3 tane de değer girdik "Enes",1989,"e@gmail.com". 3 değer girmemizin nedeni; def __init__(self,isim,dogumTarihi,emailAdresi) yapısındaki değişkenlerden gelmektedir. Burada self değişkeni için bir değer girmiyoruz.

#insan1 class'ının değişkenlerine erişmek için;
print("isim:{}".format(insan1.isim))
print("doğum tarihi:{}".format(insan1.dogumTarihi))
print("email adresi:".format(insan1.emailAdresi))
print("okul:{}".format(insan1.okul))
print("yaş:{}".format(insan1.yasHesaplama()))

Çıktı:

isim:Enes
doğum tarihi:1989
email adresi:
okul:Ankara Ünv.
yaş:32
#insan2 adında da bir değişken oluşturabiliriz.
insan2=Insan("Sefa",1995,"s@gmail.com")
#insan2 class'ının değişkenlerine erişmek için;
print("isim:{}".format(insan2.isim))
print("doğum tarihi:{}".format(insan2.dogumTarihi))
print("email adresi:".format(insan2.emailAdresi))
print("okul:{}".format(insan2.okul))
print("yaş:{}".format(insan2.yasHesaplama()))

Çıktı:

isim:Sefa
doğum tarihi:1995
email adresi:
okul:Ankara Ünv.
yaş:26
#insan3 adında da bir değişken oluşturabiliriz.
insan3=Insan("Mustafa",1987,"m@gmail.com")
#insan3 class'ının değişkenlerine erişmek için;
print("isim:{}".format(insan3.isim))
print("doğum tarihi:{}".format(insan3.dogumTarihi))
print("email adresi:".format(insan3.emailAdresi))
print("okul:{}".format(insan3.okul))
print("yaş:{}".format(insan3.yasHesaplama()))

Çıktı:

isim:Mustafa
doğum tarihi:1987
email adresi:
okul:Ankara Ünv.
yaş:34

Son durum görselleştirilirse;

 

Değişkenleri değiştirme işlemi

insan1.okul="Gazi Ünv."
insan1.isim="Defne"
print("isim:{}".format(insan1.isim))
print("okul:{}".format(insan1.okul))

Çıktı:

isim:Defne
okul:Gazi Ünv.

Class'a yeni bir fonksiyon ekleyelim;

class Insan():
    okul="Ankara Ünv."
    
    def __init__(self,isim,dogumTarihi,emailAdresi):
        self.isim=isim
        self.dogumTarihi=dogumTarihi
        self.emailAdresi=emailAdresi
    
    def yasHesaplama(self):
        return 2021-self.dogumTarihi
    
    def ozetBilgi(self):
        return "Öğrenci bilgileri okul: {} isim: {} doğum tarihi:{} email adresi:{}".format(self.okul,self.isim,self.dogumTarihi,self.emailAdresi)
insan1=Insan("Enes",1989,"e@gmail.com")
insan1.ozetBilgi()

Çıktı:

'Öğrenci bilgileri okul: Ankara Ünv. isim: Enes doğum tarihi:1989 email adresi:e@gmail.com'

Örnek-2: Şehirlerin adını, ülkesini, bölgesini ve fotoğraflarını tutacak ve sonra bu bilgileri listeleyecek bir class yazalım.

class SehirBilgi():
    ulke="Türkiye"
    def __init__(self,bolge,sehir,fotograf):
        self.bolge=bolge
        self.sehir=sehir
        self.fotograf=fotograf
        
    def sehirOzellikleri(self):
        return "{} {} bölgesi {} sehri fotograf listesi {}".format(self.ulke,self.bolge,self.sehir,self.fotograf)
#sehir1 adı altında bir tane örnekleme yapalıö
sehir1=SehirBilgi("Ege","Mugla",["a.png","b.png","c.png"])
sehir1.sehirOzellikleri()

Çıktı:

"Türkiye Ege bölgesi Mugla sehri fotograf listesi ['a.png', 'b.png', 'c.png']"
#fotoğraflar bir listede tutulduğundan liste özelliklerini kullanarak ekleme-çıkartma işlemi yapabiliriz.
sehir1.fotograf.append("d.png")
sehir1.sehirOzellikleri()

Çıktı:

"Türkiye Ege bölgesi Mugla sehri fotograf listesi ['a.png', 'b.png', 'c.png', 'd.png']"
sehir1.fotograf.remove("a.png")
sehir1.sehirOzellikleri()

Çıktı:

"Türkiye Ege bölgesi Mugla sehri fotograf listesi ['b.png', 'c.png', 'd.png']"
Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.