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']"