Python'da Class (sınıf), nesne yönelimli programlamanın temel yapı taşlarından biridir. Bir sınıf, veri ve işlevlerin bir arada toplandığı bir şablon görevi görür. Sınıflar, gerçek dünya varlıklarını modellemek için kullanılır ve her sınıftan birçok nesne (instance) türetilebilir. Bir sınıf içinde tanımlanan özelliklere (attributes) ve işlevlere (methods) nesne üzerinden erişilir.
Sınıf Tanımlama
Python'da sınıf tanımlamak için class
anahtar kelimesi kullanılır. Basit bir sınıf tanımı şu şekildedir:
class Ogrenci:
def __init__(self, isim, yas, sinif):
self.isim = isim # Nesnenin ismi
self.yas = yas # Nesnenin yaşı
self.sinif = sinif # Nesnenin sınıfı
def bilgileri_goster(self):
print(f"İsim: {self.isim}, Yaş: {self.yas}, Sınıf: {self.sinif}")
Adım Adım İnceleyelim:
-
Sınıf Tanımı (class Definition):
class Ogrenci:
ifadesiyle başlar. -
Constructor (Yapıcı Metot):
__init__
metodu, sınıftan bir nesne oluşturulduğunda çağrılır ve nesnenin başlangıç özelliklerini ayarlar. -
Attributes (Özellikler):
isim
,yas
,sinif
bu sınıfın özellikleridir. Her nesneye özgü bilgiler taşır. -
Metotlar (Methods):
bilgileri_goster
metodu, nesnenin bilgilerini ekrana yazdıran bir metottur.
Sınıf Kullanımı (Nesne Oluşturma)
Sınıf kullanımı, o sınıftan nesne oluşturulması ve metotların çağrılmasıyla olur.
# Sınıftan nesne oluşturma
ogrenci1 = Ogrenci("Ahmet", 15, "9A")
ogrenci2 = Ogrenci("Ayşe", 16, "10B")
# Metotları kullanma
ogrenci1.bilgileri_goster() # İsim: Ahmet, Yaş: 15, Sınıf: 9A
ogrenci2.bilgileri_goster() # İsim: Ayşe, Yaş: 16, Sınıf: 10B
Örnek: Basit Bir Banka Hesabı Sınıfı
Gerçek dünya problemini modellemek için bir banka hesabı sınıfı oluşturalım. Bu sınıf, hesaba para yatırma, çekme ve bakiye kontrol etme işlevlerine sahip olsun.
class BankaHesabi:
def __init__(self, hesap_sahibi, bakiye=0
):
self.hesap_sahibi = hesap_sahibi # Hesap sahibinin adı
self.bakiye = bakiye # Hesap bakiyesi
def bakiye_goster(self):
print(f"Hesap sahibi: {self.hesap_sahibi}, Bakiye: {self.bakiye} TL")
def para_yatir(self, miktar):
self.bakiye += miktar
print(f"{miktar} TL yatırıldı. Yeni bakiye: {self.bakiye} TL")
def para_cek(self, miktar):
if miktar > self.bakiye:
print(f"Bakiye yetersiz! Mevcut bakiye: {self.bakiye} TL")
else:
self.bakiye -= miktar
print(f"{miktar} TL çekildi. Kalan bakiye: {self.bakiye} TL")
Banka Hesabı Sınıfının Kullanımı
# Hesap oluşturma
hesap1 = BankaHesabi("Ali", 1000) # Başlangıç bakiyesi 1000 TL
hesap2 = BankaHesabi("Zeynep") # Başlangıç bakiyesi varsayılan olarak 0 TL
# Hesapların bakiyesini gösterme
hesap1.bakiye_goster() # Hesap sahibi: Ali, Bakiye: 1000 TL
hesap2.bakiye_goster() # Hesap sahibi: Zeynep, Bakiye: 0 TL
# Para yatırma
hesap1.para_yatir(500) # 500 TL yatırıldı. Yeni bakiye: 1500 TL
# Para çekme
hesap1.para_cek(200) # 200 TL çekildi. Kalan bakiye: 1300 TL
hesap2.para_cek(50) # Bakiye yetersiz! Mevcut bakiye: 0 TL
Sınıfların Faydaları
- Modülerlik: Kod parçalarını sınıflara bölebilir ve daha düzenli bir yapı oluşturabilirsiniz.
- Yeniden Kullanılabilirlik: Sınıflar, farklı projelerde tekrar kullanılabilir.
- Kapsülleme (Encapsulation): Sınıflar, veriyi ve o veriye erişim yöntemlerini bir arada tutar. Bu sayede dışarıdan müdahaleyi kontrol edebilirsiniz.
Sonuç
Bu basit örnekler, Python'da sınıfların nasıl tanımlanıp kullanıldığını gösterir. Sınıflar, nesne yönelimli programlama (OOP) yaklaşımının temelidir ve daha büyük ve karmaşık programlar yazarken büyük bir avantaj sağlar.