0
user Programlama Akademi
15-01-2025 2:45 PM
Python

Python 3'te Sınıflar Nasıl Oluşturulur ve Nesneler Nasıl Tanımlanır

Giriş

Python, nesne yönelimli bir programlama dilidir. Nesne yönelimli programlama (Object-Oriented Programming - OOP), açıkça sıralanmış talimatlara odaklanan prosedürel programlamanın aksine, yeniden kullanılabilir kod kalıpları oluşturmaya odaklanır. Özellikle karmaşık programlar üzerinde çalışırken, nesne yönelimli programlama kodunuzu yeniden kullanmanıza ve daha okunabilir yazmanıza olanak tanır; bu da kodun daha sürdürülebilir olmasını sağlar.

Nesne yönelimli programlamanın en önemli kavramlarından biri, sınıflar ve nesneler arasındaki farktır ve şu şekilde tanımlanır:

  • Sınıf (Class) — Bir programcı tarafından bir nesne için oluşturulan şablon. Bu, bu sınıftan türetilecek herhangi bir nesneyi tanımlayacak bir dizi özelliği belirler.
  • Nesne (Object) — Bir sınıfın örneği. Bu, sınıfın programda somutlaştırıldığı, gerçekleştirilen versiyonudur.

Bu kavramlar, (sınıflar için) kalıplar oluşturmak ve ardından (nesneler için) bu kalıpları kullanmak için kullanılır.

Bu öğreticide, sınıflar oluşturmayı, nesneleri başlatmayı, __init__ yöntemiyle nitelikleri başlatmayı ve aynı sınıftan birden fazla nesneyle çalışmayı ele alacağız.

Sınıflar

Sınıflar, nesneler oluşturmak için kullanabileceğiniz bir şablon veya prototip gibidir.

Sınıfları, tıpkı def anahtar kelimesiyle fonksiyonları tanımladığımız gibi, class anahtar kelimesiyle tanımlarız.

Bilgi: Bu öğreticideki örnek kodları takip etmek için, yerel sisteminizde python3 komutunu çalıştırarak bir Python etkileşimli kabuğu açabilirsiniz. Daha sonra örnekleri >>> istemcisinden sonra kopyalayıp yapıştırabilir veya düzenleyebilirsiniz.

Haydi, Shark adında bir sınıf tanımlayalım. Bu sınıfa, biri yüzme, diğeri harika olma ile ilgili iki fonksiyon ekleyelim:

Kopekbaligi.py

class Kopekbaligi:
    def yuz(self):
              print("Kopekbaligi yüzüyor.")

    def harika_ol(self):
        print("Kopekbaligi harika oluyor.")

Bu fonksiyonlar, Kopekbaligi sınıfının altına girintili yazıldıkları için metot olarak adlandırılır. Metotlar, bir sınıf içinde tanımlanan özel bir fonksiyon türüdür.

Bu fonksiyonların argümanı olan self, bu sınıfa dayalı olarak oluşturulan nesnelere bir referanstır. Sınıfın örneklerine (veya nesnelerine) başvurmak için self her zaman ilk parametre olacaktır, ancak tek parametre olması gerekmez.

Bu sınıfı tanımlamak herhangi bir Kopekbaligi nesnesi oluşturmadı; sadece daha sonra tanımlayabileceğimiz bir Kopekbaligi nesnesi için bir şablon oluşturdu. Yani, yukarıdaki programı bu aşamada çalıştırırsanız hiçbir şey döndürülmez.

Yukarıda Kopekbaligi sınıfını oluşturmak bize bir nesne için bir şablon sağladı.

Nesneler

Bir nesne, bir sınıfın örneğidir. Yukarıda tanımlanan Kopekbaligi sınıfını alıp, bunun bir nesnesini veya örneğini oluşturmak için kullanabiliriz.

Haydi, Sammy adlı bir Kopekbaligi nesnesi oluşturalım:

sammy = Kopekbaligi()

Burada, sammy nesnesini sınıfın bir örneği olarak başlattık ve bunu Kopekbaligi()'na eşitledik.

Şimdi, Kopekbaligi nesnesi sammy ile iki metodu kullanalım:

sammy = Kopekbaligi()
sammy.yuz()
sammy.harika_ol()

Kopekbaligi nesnesi sammy, yüz() ve harika_ol() metotlarını kullanıyor. Bunları, bir nesnenin bir niteliğine başvurmak için kullanılan (.) (nokta) operatörüyle çağırdık. Bu durumda, nitelik bir metottur ve parantezlerle çağrılır, tıpkı bir fonksiyonu çağırır gibi.

self anahtar kelimesi, Kopekbaligi sınıfında tanımlanan metotların bir parametresi olduğu için, sammy nesnesi metotlara otomatik olarak iletilir. self parametresi, metotların nesne niteliklerine başvurmasını sağlar.

Metotları çağırdığımızda, parantezlerin içine hiçbir şey yazmasak da, sammy nesnesi . operatörü ile otomatik olarak iletilir.

Programın bağlamında nesneyi ekleyelim:

```python Kopekbaligi.py

class Kopekbaligi: def yuz(self): print("Kopekbaligi yüzüyor.")

def harika_ol(self):
           print("Kopekbaligi harika oluyor.")

def ana(): sammy = Kopekbaligi() sammy.yuz() sammy.harika_ol()

if name == "main": ana()


Programı çalıştırıp ne yaptığını görelim:  

```bash
$ python Kopekbaligi.py

Çıktı

Kopekbaligi yüzüyor.  
Kopekbaligi harika oluyor.

Nesne sammy, programın ana() fonksiyonunda iki metodu çağırıyor ve bu metotların çalışmasını sağlıyor.

Yapıcı Metot

Yapıcı metot, verileri başlatmak için kullanılır. Bir sınıfın bir nesnesi oluşturulur oluşturulmaz çalışır. Aynı zamanda __init__ metodu olarak bilinir, bu sınıfın ilk tanımıdır ve şu şekilde görünür:

class Kopekbaligi:
     def __init__(self):
        print("Bu bir yapıcı metottur.")

Yukarıdaki __init__ metodunu Kopekbaligi sınıfına eklerseniz, programda hiçbir şey değiştirmeden çalıştırdığınızda şu çıktıyı alırsınız:

Çıktı

Bu bir yapıcı metottur.  
Kopekbaligi yüzüyor.  
Kopekbaligi harika oluyor.

Bu, yapıcı metodun otomatik olarak başlatılmasından kaynaklanır. Bu metodu, sınıf nesnelerinizle yapmak istediğiniz herhangi bir başlatmayı gerçekleştirmek için kullanmalısınız.

Yukarıdaki yapıcı metodun yerine, nesnelere isim atamak için kullanabileceğimiz bir isim değişkeni kullanan bir tane oluşturalım. isim parametresini geçeceğiz ve self.isim'i isim'e eşitleyeceğiz:
Kopekbaligi.py

class Kopekbaligi:
    def __init__(self, isim):
        self.isim = isim

Daha sonra fonksiyonlarımızdaki dizeleri isimlere referans verecek şekilde şu şekilde değiştirebiliriz:

class Kopekbaligi:
    def __init__(self, isim):
        self.isim = isim

    def yuz(self):
            # İsme atıfta bulunun
        print(self.isim + " yüzüyor.")

    def harika_ol(self):
            # İsme atıfta bulunun
        print(self.isim + " harika oluyor.")

Son olarak, Kopekbaligi nesnesi sammy'nin adını "Sammy" olarak ayarlayabiliriz:

Kopekbaligi.py

```python Kopekbaligi.py

class Kopekbaligi: def init(self, isim): self.isim = isim

def yuz(self):
          print(self.isim + " yüzüyor.")

def harika_ol(self):
         print(self.isim + " harika oluyor.")

def ana():

# Kopekbaligi nesnesinin adını belirle
sammy = Kopekbaligi("Sammy")
sammy.yuz()
sammy.harika_ol()

if name == "main": ana()


Programı çalıştıralım:  

```bash
$ python Kopekbaligi.py

Çıktı

Sammy yüzüyor.  
Sammy harika oluyor.

Gördüğümüz gibi, nesneye geçirdiğimiz isim yazdırılıyor. __init__ metodunu isim parametresi (ve self anahtar kelimesi) ile tanımladık ve metodun içinde bir değişken tanımladık.

Yapıcı metot otomatik olarak başlatıldığı için, onu açıkça çağırmamıza gerek yoktur. Sınıf adından sonra parantez içindeki argümanları geçtiğimizde yeterlidir.

Eğer bir parametre daha eklemek istersek, örneğin yaş, bunu __init__ metoduna geçirerek yapabiliriz:

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

Sonrasında, nesnemiz sammy için Sammy'nin yaşını şu şekilde belirtebiliriz:

sammy = Kopekbaligi("Sammy", 5)

Bu yaşı kullanmak için sınıfta bunu çağıran bir metot oluşturmamız gerekir.

Yapıcı metotlar, bir nesnenin belirli niteliklerini başlatmamıza olanak tanır.

Birden Fazla Nesne ile Çalışmak

Sınıflar, aynı taslak temelinde birçok benzer nesne oluşturmamıza olanak tanır.

Bu işlemin nasıl çalıştığını anlamak için programımıza başka bir Kopekbaligi nesnesi ekleyelim:

```python Kopekbaligi.py
class Kopekbaligi: def init(self, isim): self.isim = isim

def yuz(self):
          print(self.isim + " yüzüyor.")

def harika_ol(self):
          print(self.isim + " harika oluyor.")

def ana(): sammy = Kopekbaligi("Sammy") sammy.harika_ol() stevie = Kopekbaligi("Stevie") stevie.yuz()

if name == "main": ana()


Burada `"Stevie"` ismini geçirerek `stevie` adında ikinci bir `Kopekbaligi` nesnesi oluşturduk. Bu örnekte, `sammy` ile `harika_ol()` yöntemini, `stevie` ile `yuz()` yöntemini kullandık.

Programı çalıştıralım:  

```bash
$ python Kopekbaligi.py

Çıktı

Sammy harika oluyor.  
Stevie yüzüyor.

Çıktı, Kopekbaligi sınıfından hem sammy hem de stevie nesnelerini kullandığımızı gösteriyor.

Sınıflar, her birini sıfırdan oluşturmadan, aynı kalıbı takip eden birden fazla nesne oluşturmayı mümkün kılar.

Sonuç

Bu eğitimde, sınıflar oluşturmayı, nesneleri başlatmayı, yapıcı yöntemle özellikleri başlatmayı ve aynı sınıfa ait birden fazla nesneyle çalışmayı ele aldık.

Nesne tabanlı programlama, kodun yeniden kullanılmasını sağlar çünkü bir program için oluşturulan nesneler başka bir programda da kullanılabilir. Ayrıca, nesne tabanlı programlama daha iyi bir program tasarımı sunar; zira karmaşık programların yazılması zordur ve dikkatli bir planlama gerektirir, bu da zamanla programın bakımını daha kolay hale getirir.


Lisa Tagliaferri tarafından yazılan How To Construct Classes and Define Objects in Python 3 Program makalesinin düzenlenmiş çevirisi.


Daha Fazla Oku:


Bu Makaleyi Paylaş

Yorumlar

yorum Yap