Python - Nedır bu __init__():?

Merhaba, python programlama yaparken klasik tarzda şu şekilde;

def login_screen():

fonksiyon oluşturuyorum. Fakat mantığını ve kullanım alanlarını anlamak istediğim şu init(): şeklinin tam olarak ne işe yaradığını kavramam lazım. Hangi durumlarda gereklidir, faydası nelerdir, hangi şartları yerine getirir vb. gibi genel bir bilgilendirme yapabilecek var mı aramızda?

Şimdiden teşekkürler…

Merhaba __init__ fonksiyonu bir yapıcı method diyebiliriz class ilk örneklendiğinde yapılacak olan işleri __init__ blokları içerisinde belirleyebiliriz kısaca ilklendirme methodu.

init(): kodunu class için kullanıyoruz sadece öyle mi anlamalıyım bunu ?

Bir deneyin isterseniz.

class Sınıf():
    def __init__(self):
        print("Hello init çalıştı.")

Evet sınıf içerisinde kullanılır kullandıkça daha da anlarsınız zaten ne işe yaradığını örnek verdim aşağıda.

Evet, ozel metodlarin tamami (ismi ustunde) bir objenin muhtelif durumlardaki davranisini belirliyorlar ve sadece kullanim kolayligi icin varlar.

Bu arada kod parcalarini ` arasina alman lazim.

peki bu özelliği yani __init__(): özelliğini kullanmasam bana çok zararı olur mu?

Ne ise yaradigini bilmeden kullanmandan daha fazla zarari olmaz, hayir.

Sınıflar konusunu öğrenirseniz, neden kullanmanız gerektiğini de anlarsınız. __init__ metodunu kullanarak bir sınıftan örnekler oluşturursunuz.

Olusturdugun her ornek uzerinde ayni isi yapmani kolaylastiriyor sadece; ornek olusturmak icin bir gereksinim degil.

Edit: Ama herhalde class’lari anlatan her derste ilk gosterilen sey.

Yanlış ifade ettim, sağolsun @aib düzeltti.

class dersinde

__init__():

yapısını gördüm. şuan da kendi hesap kitabımı tutacağım bir program yazarken __init__(): yapısı aklıma geldi acaba kullansam ne faydası olur diye. Söylediklerinize baktıktan sonra çok detaylı bir şey olmadığı için gerek duymadım. Ama cevaplar için teşekkürler üstüne araştırmalar yapıp geliştirip kullanacağım inşallah sağolun

Birçok kez class kullanmak zorunda hissetmeyebilirsiniz. Ama öyle durumlar var ki, ancak bir sınıf kullanırsanız işlemi gerçekleştirebilirsiniz. Örnek olsun diye paylaşıyorum.

Kod 1:

import sys

a = []
save = sys.stdout
sys.stdout = a
print("hello")
sys.stdout = save
print(a)

Bu kodları çalıştırırsanız şöyle bir hata alırsınız:

AttributeError: 'list' object has no attribute 'flush'

Ama aşağıdaki kod listeye "hello" yazısını ekleyecektir.

Kod 2:

import sys


class StdIOYonlendiricisi:
    def __init__(self, obj):
        self.obj = obj

    def write(self, string):
        if isinstance(self.obj, list):
            self.obj.append(string)

    def flush(self):
        pass


a = []
save = sys.stdout
sys.stdout = StdIOYonlendiricisi(obj=a)
print("hello")
sys.stdout = save
print(a)

Bu kodları çalıştırdığınız zaman alacağınız çıktı şöyle olacaktır:

['hello', '\n']

Burada yapılan şey şu: Bir sınıfın metotlarını taklit eden başka bir sınıf oluşturduk ve bu sayede listeye eleman eklenmesini sağladık.