Python Sınıflar/Nesneler

Python, nesne tabanlı bir programlama dilidir. Python'da neredeyse her şey bir sınıftır.

Python Sınıflar/NesnelerBir sınıf (class), kendisinden örnek oluşturulabilen bir nesnedir (object). Bu sınıflara özellik ve yöntemler atanabilir.

Bir Sınıf Oluşturmak

Sınıf oluşturmak için class ifadesi kullanılır. Bu ifadeden sonra sınıfın adına yer verilir ve iki nokta üst üste kullanılarak sınıf yapısı yazılmaya başlanır:
 

PYTHON Kodu

class Sinifim:
  x = 5

Yukarıdaki örnekte Sinifim adında ve tek özellikli (x) bir sınıf oluşturulmuştur.
 

Sınıfın Bir Örneğini (Nesne) Oluşturmak

Yukarıdaki örnekte bir sınıf tanımladık. Peki bu sınıfı nasıl nesne olarak oluşturup kullanacağız? Bunun için aşağıdaki örneği inceleyin:
 

PYTHON Kodu

class Sinifim:
  x = 5

p1 = Sinifim()
print(p1.x);

Örnek kodu incelediğimizde, nesne yaratırken sınıf adını ve sonrasında parantez aç-kapat yapıyoruz.
 

__init__() Fonksiyonu

Bundan önceki örnekler bir sınıfın temel bileşenleriydi. Şimdi bahsedilecek olan __init__() fonksiyonu ise sınıfın temel bileşenidir. Nesne oluşturulduğunda ilk olarak bu fonksiyon çalıştırılır.
 

PYTHON Kodu

class Kisi:
  def __init__(self, isim, yas):
    self.isim = isim
    self.yas = yas

p1 = Kisi("Murat", 36)

print(p1.isim)
print(p1.yas)

Yukarıdaki örnekte def __init__(self, isim, yas): sınıfın yapıcı fonksiyonudur. Burada belirtilen isim ve yas değişkenleri, sınıfın bir örneği oluşturulurken kullanılan değişkenlerdir.
 

Nesne Yöntemleri/Metotları

Nesneler için sınıfa özgü yöntemler/metotlar geliştirilebilir. Nesne yaratıldıktan sonra bu yöntemler .yontemAdi() şeklinde çalıştırılabilir.
 

PYTHON Kodu

class Kisi:
  def __init__(self, isim, yas):
    self.isim = isim
    self.yas = yas
  def yazdir(self):
    print("Merhaba, adım ", self.isim, ", yaşım ", self.yas);

p1 = Kisi("Murat", 36)
p1.yazdir()

NOT: Yukarıdaki örneklerde geçen self, sınıfın kendisini ifade eden bir parametre olup nesneye ait özellik ve yöntemlerle işlem yaparken kullanılır. İstenilirse bunun yerine farklı adlandırmalar yapılabilir. Ancak __init__() ve yöntemlerde kullanılması zorunludur. Aşağıdaki örnekte önce kendisi, sonradan da kisi şeklinde adlandırılıp kullanılmıştır:
 

PYTHON Kodu

class Kisi:
  def __init__(kendisi, isim, yas):
    kendisi.isim = isim
    kendisi.yas = yas
  def yazdir(kisi):
    print("Merhaba, adım ", kisi.isim, ", yaşım ", kisi.yas);

p1 = Kisi("Murat", 36)
p1.yazdir()

Nesne Özelliklerini Değiştirmek

Nesne özelliğinden sonra eşittir yazılarak yeni değer ifade edilebilir:
 

PYTHON Kodu

class Kisi:
  def __init__(self, isim, yas):
    self.isim = isim
    self.yas = yas

p1 = Kisi("Murat", 36)
p1.yas = 40
print(p1.yas)

Nesnenin Bir Özelliğini Ya Da Nesneyi Silmek

Bunun için del ifadesi kullanılabilir:
 

PYTHON Kodu

kisi = new Kisi("Murat", 36)

del kisi.yas # yas özelliğini siler

del kisi # nesneyi tamamen siler

pass İfadesi

Sınıflar boş olamaz. En azından tek bir satırlık kod beklerler. Bu nedenle eğer hiçbir kod yazılmayacaksa sınıftan sonra pass yazılmalıdır.

 

Python Alt Sınıflar

Python'da bir sınıfın benzer özelliklere sahip alt sınıfları oluşturulabilir. Miras alma (inheritance) olarak bilinen bu yöntemle, örnek alınan sınıfa ait tüm özellikler ve yöntemler yeni tanımlanan sınıfta da bulunur.
 

PYTHON Kodu

class Kisi:
  def __init__(self, isim, yas):
    self.isim = isim
    self.yas = yas

class Ogrenci(Kisi):
  pass

p1 = Ogrenci("Murat", 36)
print(p1.yas)

Yukarıdaki örnekte Ogrenci isimli bir sınıf oluşturulmuş ve bu sınıfın Kisi sınıfının alt sınıfı olduğu sınıfın sol tarafında parantez içinde sınıf adı yazılarak belirtilmiştir.
 

__init__() Fonksiyonunu Kullanmak

Bir önceki dersimizde bu fonksiyonun sınıfların temel yapıcı fonksiyonu olduğundan bahsetmiştik. Yeni bir nesne yaratıldığında öncelikle çalıştırılırlar. Alt sınıflarda da bu fonksiyon kullanılabilir. Ancak kullanılırsa miras aldığı sınıfa ait __init__() fonksiyonu geçersiz olacaktır.
 

PYTHON Kodu

class Kisi:
  def __init__(self, isim, yas):
    self.isim = isim
    self.yas = yas

class Ogrenci(Kisi):
  def __init__(self, isim, sinif):
     self.isim = isim
     self.sinif = sinif

p1 = Ogrenci("Murat", "9/A")
print(p1.sinif)

Yukarıdaki örnekte Ogrenci sınıfı içindeki yas özelliğini kaldırarak sınıf özelliği ekledik ve ekrana yazdırdık. Eğer örnek aldığı sınıfa ait __init__() fonksiyonunun da geçerli olmasını istiyorsak aşağıdaki kodu kullanabiliriz:
 

PYTHON Kodu

class Kisi:
  def __init__(self, isim, yas):
    self.isim = isim
    self.yas = yas

class Ogrenci(Kisi):
  def __init__(self, isim, yas, sinif):
     Kisi.__init__(self, isim, yas)
     self.sinif = sinif

p1 = Ogrenci("Murat", 36, "9/A")
print(p1.sinif)

Alt sınıfın __init__() fonksiyonunda yer vereceğimiz .__init__(...), önceki sınıfa ait isim ve yas özelliklerinin de Ogrenci sınıfı için kullanılmasını sağlamıştır.

Yukarıda örneği alınan sınıfın adını yazmak yerine super() fonksiyonu kullanılabilir. Yani yukarıdaki örnek için super().__init__(self, isim, yas) şeklinde kullanım da doğrudur.

UYARI: Alt sınıflarda kullandığınız fonksiyon/yöntem ya da özellikler her zaman miras aldığı sınıfın özelliklerini gölgeleyecek ve üstüne yazacaktır.
 

PYTHON Kodu

class Kisi:
  def __init__(self, isim, yas):
    self.isim = isim
    self.yas = yas
  def yazdir(self):
    print("Hoş geldin", self.isim)

class Ogrenci(Kisi):
  def __init__(self, isim, yas, sinif):
     Kisi.__init__(self, isim, yas)
     self.sinif = sinif
  def yazdir(self):
     print("Hoş geldin, sevgili öğrencimiz", self.isim)

p1 = Ogrenci("Murat", 36, "9/A")
p1.yazdir()

 

Kaynak

 

Yorumunuzu Ekleyin


Yükleniyor...
Yükleniyor...