Python'da constructor (yapıcı metot), bir sınıftan yeni bir nesne oluşturulurken otomatik olarak çalışan bir metottur. Python'da bu işlevi sağlayan özel metodun adı __init__
metodudur.
Constructor'ın Temel Görevi:
- Bir sınıftan nesne oluşturulurken çalıştırılır ve bu nesnenin başlangıç durumunu belirler.
- Constructor, genellikle nesnenin özelliklerini (attributes) tanımlamak ve başlangıç değerlerini atamak için kullanılır.
__init__
Metodu
Python'da __init__
metodu, sınıfa ait özelliklerin (attributes) ilk değerlerini ayarlamak için kullanılır. Bu metodun içinde nesneye özel özellikler tanımlanır.
Basit Bir Constructor Örneği:
class Araba:
def __init__(self, model, renk): # Constructor
self.model = model # Nesnenin model özelliği
self.renk = renk # Nesnenin renk özelliği
def bilgi(self):
print(f"Araba modeli: {self.model}, rengi: {self.renk}")
Yukarıdaki Araba
sınıfında, __init__
metodu, model
ve renk
adında iki özelliği sınıfın nesnelerine atar. Bu, her yeni araba nesnesi oluşturulduğunda çalışır.
Constructor Nasıl Çalışır?
Bir sınıftan nesne oluşturulduğunda __init__
metodu otomatik olarak çağrılır ve parametreler bu metoda aktarılır. Örneğin:
araba1 = Araba("Toyota", "Kırmızı") # __init__ otomatik olarak çağrılır
araba2 = Araba("Honda", "Mavi")
araba1.bilgi() # Araba modeli: Toyota, rengi: Kırmızı
araba2.bilgi() # Araba modeli: Honda, rengi: Mavi
self
Parametresi Nedir?
-
self
, sınıfın o anki örneğini temsil eder ve sınıf içindeki özelliklere ve metotlara erişim sağlar. - Her sınıf metodu (özellikle
__init__
) ilk parametre olarakself
alır, fakat bu parametreyi sınıfı çağırırken belirtmemize gerek yoktur. Python bunu otomatik olarak halleder.
class Kisi:
def __init__(self, isim):
self.isim = isim # self.isim, nesneye ait bir özelliktir
def selamla(self):
print(f"Merhaba, benim adım {self.isim}.")
Bu sınıftan bir nesne oluşturulduğunda:
kisi1 = Kisi("Ali")
kisi1.selamla() # Merhaba, benim adım Ali.
Constructor İçinde Varsayılan Değerler
Constructor'da parametrelere varsayılan değerler de atanabilir. Bu sayede, nesne oluşturulurken bazı parametreler belirtilmese bile varsayılan değerler kullanılır.
class Araba:
def __init__(self, model="Bilinmiyor", renk="Bilinmiyor"
):
self.model = model
self.renk = renk
def bilgi(self):
print(f"Araba modeli: {self.model}, rengi: {self.renk}")
araba1 = Araba() # Parametre verilmedi, varsayılan değerler kullanılır
araba2 = Araba("Tesla", "Beyaz")
araba1.bilgi() # Araba modeli: Bilinmiyor, rengi: Bilinmiyor
araba2.bilgi() # Araba modeli: Tesla, rengi: Beyaz
Birden Fazla Constructor
Python'da doğrudan birden fazla constructor (metot aşırı yükleme, yani method overloading) desteklenmez. Ancak bu durumu farklı yollarla yönetmek mümkündür, örneğin parametrelerin varsayılan değerlerini belirlemek ya da koşullu ifadeler kullanmak yaygın bir tekniktir.
class Araba:
def __init__(self, model=None, renk=None
):
if model and renk:
self.model = model
self.renk = renk
else:
self.model = "Bilinmiyor"
self.renk = "Bilinmiyor"
def bilgi(self):
print(f"Araba modeli: {self.model}, rengi: {self.renk}")
araba1 = Araba("Toyota", "Kırmızı")
araba2 = Araba()
araba1.bilgi() # Araba modeli: Toyota, rengi: Kırmızı
araba2.bilgi() # Araba modeli: Bilinmiyor, rengi: Bilinmiyor
Özet
- Constructor: Bir sınıftan
nesne oluşturulurken otomatik olarak çalışan bir yapıcı metottur.
- Python'da constructor işlevini
__init__
metodu yerine getirir. - Constructor, nesnenin başlangıç özelliklerini ayarlamak için kullanılır.
-
self
, o sınıftan oluşturulan nesneyi temsil eder ve sınıfın içinde kullanılır. - Parametrelere varsayılan değerler verilebilir ve birden fazla constructor yerine alternatif çözümler üretilebilir.
Constructor, nesne yönelimli programlamada sınıfların düzgün bir şekilde çalışmasını sağlayan önemli bir yapıdır.