Python'da metotlar (methods), bir sınıf içinde tanımlanan ve o sınıftan türetilen nesnelerin gerçekleştirebileceği işlevleri tanımlayan fonksiyonlardır. Yani, sınıfın davranışlarını temsil ederler.
Metotların Özellikleri:
- Sınıf içindeki bir fonksiyondur.
- İlk parametre olarak self alır (bu, metot çağrıldığında o nesnenin kendisine erişimi sağlar).
- Bir sınıfın özelliklerini ve diğer metotlarını kullanarak nesneye özel işlevsellik sağlar.
Metot Türleri
Python'da birkaç farklı metot türü vardır:
- Örnek Metotlar (Instance Methods)
- Sınıf Metotları (Class Methods)
- Statik Metotlar (Static Methods)
1. Örnek Metotlar (Instance Methods)
Bu metotlar, bir sınıfın nesnelerine özgüdür ve genellikle sınıfın __init__
metoduyla oluşturulan özelliklerine erişirler. İlk parametre olarak self
alırlar.
class Araba:
def __init__(self, model, renk):
self.model = model
self.renk = renk
def bilgi(self): # Örnek metot
return f"Model: {self.model}, Renk: {self.renk}"
# Nesne oluşturma
araba1 = Araba("Toyota", "Kırmızı")
print(araba1.bilgi()) # Model: Toyota, Renk: Kırmızı
Yukarıdaki örnekte, bilgi()
metodu, self
parametresi aracılığıyla nesneye erişir ve nesneye özgü bilgileri döndürür.
2. Sınıf Metotları (Class Methods)
Sınıf metotları, sınıfın tamamını etkileyen işlemler için kullanılır. İlk parametre olarak cls
alırlar ve sınıfın kendisine erişirler (nesneye değil). Bu metotlar, @classmethod dekoratörü ile tanımlanır.
class Araba:
sayi = 0 # Sınıf değişkeni
def __init__(self, model):
self.model = model
Araba.sayi += 1
@classmethod
def toplam_araba(cls): # Sınıf metodu
return f"Toplam Araba Sayısı: {cls.sayi}"
# Nesneler oluşturma
araba1 = Araba("Toyota")
araba2 = Araba("Honda")
print(Araba.toplam_araba()) # Toplam Araba Sayısı: 2
Bu örnekte, toplam_araba()
metodu sınıfın genel durumunu temsil eder ve tüm nesneler tarafından paylaşılan sayi
sınıf değişkenini kullanır.
3. Statik Metotlar (Static Methods)
Statik metotlar, sınıfın veya nesnenin durumuna erişmezler (yani self
veya cls
parametreleri almazlar). Genellikle sınıfa ait bir fonksiyon olarak çalışırlar ve sınıfın veya nesnenin durumunu değiştirmezler. @staticmethod dekoratörü ile tanımlanırlar.
class Araba:
@staticmethod
def teker_sayisi():
return 4
# Statik metodu çağırma
print(Araba.teker_sayisi()) # 4
Yukarıdaki örnekte, teker_sayisi()
metodu sınıfın durumu hakkında bilgi gerektirmez ve sadece bir işlev sunar.
Özel Metotlar (Dunder Methods)
Python'da iki alt çizgiyle başlayan ve biten özel metotlar vardır (dunder: "double underscore"). Bu metotlar, sınıflara bazı özel işlevler ekler. Örneğin:
-
__init__
: Constructor (yapıcı metot) -
__str__
: Nesneyi metin olarak döndürmek için kullanılır. -
__len__
: Bir nesnenin uzunluğunu döndürür.
Örnek:
class Araba:
def __init__(self, model, renk):
self.model = model
self.renk = renk
def __str__(self): # Özel metot
return f"Model: {self.model}, Renk: {self.renk}"
araba = Araba("Tesla", "Beyaz")
print(araba) # Model: Tesla, Renk: Beyaz
Metot Kullanımı
Bir sınıfın metotlarına şu şekilde erişilir:
- Önce sınıftan bir nesne oluşturulur.
- Bu nesne üzerinden metotlar çağrılır.
class Kedi:
def __init__(self, isim):
self.isim = isim
def miyavla(self):
print(f"{self.isim} miyavlıyor!")
# Nesne oluşturma ve metot çağırma
kedi1 = Kedi("Minik")
kedi1.miyavla() # Minik miyavlıyor!
Özet:
- Metotlar, sınıf içinde tanımlanan fonksiyonlardır ve nesnelerle ilgili işlevleri yerine getirirler.
- Örnek metotlar nesnelerle etkileşimde bulunur.
- Sınıf metotları, sınıfın kendisiyle çalışır ve sınıf değişkenlerini manipüle eder.
- Statik metotlar, ne sınıf ne de nesne durumu gerektirmeyen işlemler için kullanılır.