Eğer daha önce etrafta sınıfları içeren kodlar görmüşseniz, bu __init__ fonksiyonuna en azından bir göz aşinalığınız vardır. Genellikle şu şekilde kullanıldığını görürüz bunun: def __init__(self): Biz şimdilik bu yapıdaki __init__ kısmıyla ilgileneceğiz. “self”in ne olduğunu şimdilik bir kenara bırakıp, onu olduğu gibi kabul edelim. İşe hemen bir örnekle başlayalım. İsterseniz kendimizce ufacık bir oyun tasarlayalım: #!/usr/bin/env python #-*- coding:utf8 -*- class Oyun: def __init__(self): enerji = 50 para = 100 fabrika = 4 isci = 10 print "enerji:", enerji print "para:", para print "fabrika:", fabrika print "işçi:", isci macera = Oyun() Gayet güzel. Dikkat ederseniz "örnekleme" (instantiation) işlemini doğrudan dosya içinde hallettik. Komut satırına bırakmadık bu işi. Şimdi bu kodları çalıştıracağız. Bir kaç seçeneğimiz var: 1. Üzerinde çalıştığımız platforma göre Python komut satırını, yani etkileşimli kabuğu açıyoruz. Orada şu komutu veriyoruz: from deneme import * Burada dosya adının "deneme.py" olduğunu varsaydık. Eğer örnekleme işlemini dosya içinden halletmemiş olsaydık, "from deneme import *" komutunu vermeden önce "macera = Oyun()" satırı yardımıyla ilk olarak sınıfımızı örneklendirmemiz gerekecekti. 2. GNU/Linux sistemlerinde başka bir seçenek olarak, ALT+F2 tuşlarına basıyoruz ve açılanuygulama = Arayuz() Bu kodları da yukarıda saydığımız yöntemlerden herhangi biri ile çalıştırıyoruz. Tabii ki bu kod da eksiksiz değildir. Ancak şimdilik amacımıza hizmet edebilmesi için kodlarımızı bu şekilde yazmamız gerekiyordu. Ama göreceğiniz gibi yine de çalışıyor bu kodlar... Dikkat ederseniz burada da örnekleme işlemini dosya içinden hallettik. Eğer örnekleme satırını dosya içine yazmazsak, Tkinter penceresinin açılması için komut satırında "uygulama = Arayuz()" gibi bir satır yazmamız gerekir. Buradaki __init__ fonksiyonu sayesinde “Arayuz” adlı sınıf her çağrıldığında bir adet Tkinter penceresi ve bunun içinde bir adet düğme otomatik olarak oluşacaktır. Zaten bu __init__ fonksiyonuna da İngilizce’de çoğu zaman “constructor” (oluşturan, inşa eden, meydana getiren) adı verilir. Gerçi __init__ fonksiyonuna "constructor" demek pek doğru bir ifade sayılmaz, ama biz bunu şimdi bir kenara bırakalım. Sadece aklımızda olsun, __init__ fonksiyonu gerçek anlamda bir "constructor" değildir, ama ona çok benzer... Şöyle bir yanlış anlaşılma olmamasına dikkat edin: “__init__” fonksiyonunun, “varsayılan değerleri belirleme”, yani “inşa etme” özelliği konumundan kaynaklanmıyor. Yani bu __init__ fonksiyonu, işlevini sırf ilk sırada yer aldığı için yerine getirmiyor. Bunu test etmek için, isterseniz yukarıdaki kodları “__init__” fonksiyonunun adını değiştirerek çalıştırmayı deneyin. Aynı işlevi elde edemezsiniz… Mesela __init__ yerine __simit__ deyin. Çalışmaz… alıntı
Son düzenleme:
