Ana sayfa > Programlama > Python Programlama > Sınıflar

Sınıflar

► Detaylı anlatım

Python nesneye yönelik bir programlama dilidir. Nesneye yönelik programlama dilinin esasını nesne oluşturur. Bir nesne oluşturmadan önce, nesnenin özelliklerini (değişkenler) ve metodlarını (fonksiyonlar) belirleyecek olan bir sınıf bildirimi yapılarak yeni bir veri türü oluşturulur. Daha sonra, bu sınıf türünden nesneler oluşturularak, sadece bu nesne yoluyla sınıf kopyası içinde yer alan değişken ve fonksiyonlara erişim sağlanır.

Sınıf bildirimi

Python'da bir sınıf bildirimi class anahtar kelimesi ile aşağıda gösterildiği şekilde yapılır:

class sınıf-adı:
   # Sınıf dışından erişim sağlanabilen değişken bildirimleri
   ortak-değişken1 = ön-tanımlı-değer1
   ortak-değişken2 = ön-tanımlı-değer2
   .
   .

   # Sınıf dışından erişilemeyen değişken bildirimleri (çift alt çizgi ile başlar.)
   __özel-değişken1
   __özel-değişken2
   .
   .
   
   # Başlangıç değer atama fonksiyonu
   def __init__(sınıf-kopya-değişkeni, param1, param2, ...):
         sınıf-kopya-değişkeni.param1 = ...
         sınıf-kopya-değişkeni.param2 = ...
         .
         .	   
		 
   # Normal sınıf fonksiyon bildirimleri 
   def fonksiyon-adı1(param1, param2, ...)
   def fonksiyon-adı2(param1, param2, ...)
   .
   .   
  • Ortak değişkenler sınıf dışından erişim sağlanabilen değişkenlerdir.
  • Çift alt çizgi ( __ ) ile başlayan özel değişkenler sınıf dışından erişilemeyen değişkenlerdir.
  • Bir sınıftan bir nesne oluşturulduğunda, __init__() fonksiyonu otomatik olarak çağrılır ve başlıcası nesnenin değişkenlerine ilk değer atamak olan işlemleri gerçekleştirir.
  • sınıf-kopya-değişkeni sınıfın aktif kopyasını gösteren ve __init__() fonksiyonunun ilk parametresi olarak tanımlanan değişken olup, sınıf içindeki değişken ve fonksiyonlara erişim sağlamak için kullanılır.
  • __init__() fonksiyonunun ilk parametresinden sonra yer alan parametrelere, nesne oluşturulurken değer atanır.

Şimdi, sınıf bildiriminin yapılmasını bir örnek üzerinde incelemeye çalışalım:


class sinif_kitap:
   # Sınıf dışından erişim sağlanabilen değişken bildirimleri
   grup = "Kitap"

   # Sınıf dışından erişilemeyen değişken bildirimleri (çift alt çizgi ile başlar.)
   __yazar = 1
   
   # Başlangıç değer atama fonksiyonu
   def __init__(self, kategori, adi):
       self.kategori = kategori
       self.adi = adi
		 
   # Normal sınıf fonksiyon bildirimleri 
   def nesne_yazdir(self):
       print(self.grup + ' ' + self.kategori + ' ' + self.adi)
	   
print(sinif_kitap)	   

Yukarıdaki programı derleyip çalıştırdığımızda, aşağıdaki ifadeleri ekrana yazar:

<class '__main__.sinif_kitap'>

Program, grup adlı bir adet ortak değişken, __yazar adlı bir adet özel değişken, iki parametreli bir __init__() fonksiyonu ve nesne değişken değerlerini ekrana yazan nesne_yazdir() adlı bir fonksiyon içeren sinif_kitap adlı bir sınıf bildirimi yapar. Sınıfı ekrana yazdırır.

Nesne oluşturma

Python'da bir sınıf bildirimi yapıldıktan sonra, aşağıdaki gösterilen genel yapıyı kullanarak bu sınıftan nesneler oluşturabiliriz. Nesneyi oluşturduktan sonra, nesne adını nokta (.) karakteri ile birlikte kullanarak sınıf içinde yer alan değişken ve fonksiyonlara erişim sağlayabiliriz.


nesne-adı = sınıf-adı(param1, param2, ...) # Nesne oluşturma (Parametre tanımlanması isteğe bağlıdır.)

# Nesne elemanlarına erişim 
print(nesne-adı.değişken-adı) # Nesne değişkenlerine erişim
nesne-adı.fonksiyon-adı() # Nesne fonksiyonlarına erişim

Bir nesne oluşturulduğunda, nesnenin oluşturulduğu sınıfın bir kopyası oluşturulmuş olur. Böylece, nesne yoluyla sınıf kopyası üzerinde yapılan değişiklikler esas sınıf içeriğini etkilemez.

Şimdi, sınıf bildiriminin yapılmasını bir örnek üzerinde incelemeye çalışalım:


class sinif_kitap:
   # Sınıf dışından erişim sağlanabilen değişken bildirimleri
   grup = 'Kitap'

   # Sınıf dışından erişilemeyen değişken bildirimleri (çift alt çizgi ile başlar.)
   __yazar = ''
   
   # Başlangıç değer atama fonksiyonu
   def __init__(self, kategori, adi, yazar):
       self.kategori = kategori
       self.adi = adi
       self.__yazar = yazar
		 
   # Normal sınıf fonksiyon bildirimleri 
   def nesne_yazdir(self):
       print(self.grup + ', ' + self.kategori + ', ' + self.adi + ', ' + self.__yazar)
	   
nes1 = sinif_kitap('Roman', 'Çalıkuşu', 'Reşat Nuri Güntekin')
nes1.nesne_yazdir()

nes2 = sinif_kitap('Hikaye', 'Perili köşk', 'Ömer Seyfettin')
nes2.nesne_yazdir()

Yukarıdaki programı derleyip çalıştırdığımızda, aşağıdaki ifadeleri ekrana yazar:

Kitap, Roman, Çalıkuşu, Reşat Nuri Güntekin
Kitap, Hikaye, Perili köşk, Ömer Seyfettin

Program, grup adlı bir adet ortak değişken, __yazar adlı bir adet özel değişken, iki parametreli bir __init__() fonksiyonu ve nesne değişken değerlerini ekrana yazan nesne_yazdir() adlı bir fonksiyon içeren sinif_kitap adlı bir sınıf bildirimi yapar. Bu sınıftan iki adet nesne oluşturur ve nesne fonksiyonu yoluyla nesne değişken değerlerini ekrana yazdırır.