Python Class İnit ve Errorlar

class Urun:
    def __init__(self,isim):
        pass

İsminde bir gövde var ve bu gövdeye pantolon ve gömlek olmak üzere iki adet ürün tanımlanacak hocanın gösterdiği ise:

liste=[]
liste.append(Urun("Gömlek"))
liste.append(Urun("Pantolon")) 

Anlamadığım nokta ise kodu direk yazıyorum:

liste=[]
class Urun:
    def __init__(self,isim):
        self.isim = isim
        
        liste.append(Urun("Pantolon"))
        liste.append(Urun("Gömlek"))

Ama listeye ürün ekleniyor mu diye bu init’i çalıştırmam lazım ama nasıl çağıracağım bu init’i
ve self.isim=isim yazıyoruz genelde class’ta bunun mantığı ne ? Kısayoldan ulaşmak için diyorlar ama bir türlü anlamadım bu eşitliği.

1 Beğeni

__init__ dediğimiz şey, sınıfa ait yeni bir örnek oluşturulduğunda çalışan fonksiyondur. Bu yüzden değişken atamaları en başta bu fonksiyon içerisinde yapılır. self.isim ve isim 2 farklı değişkendir. Bir değişkenin sınıfın neresinde olursa olsun kullanılabilmesi için başında self olması gereklidir.

Aslında self, sınıfa ait örneğin ta kendisidir. Kendisine ait bir değişken oluştururken self.değişken_adı şeklinde oluştururuz. Nitekim fonksiyonları çağırırken de self.fonksiyon_adı() şeklinde çağırıyoruz.

Yani lafın kısası, __init__() fonksiyonu zaten sınıfa ait bir örnek oluşturulduğunda çalışacaktır. self.isim yazılmasının sebebi de o sınıfa özgü bir değişkeni oluşturmaktır.

Bir sınıfı oluşturduktan sonra o sınıfa ait bir örnek oluşturmalısınız. Kodunuz daha çok şuna benzemeli gibi duruyor:

liste = []

class Urun:
    def __init__(self, isim):
        self.isim = isim

Urun_1 = Urun("Pantolon")
Urun_2 = Urun("Gömlek")
liste.append(Urun_1)
liste.append(Urun_2)

Ürünlere bir liste üzerinden ulaşmak istiyorsanız Urun_1 ve Urun_2 gibi isim vermekle uğraşmayabilirsiniz.

Yani bunun gibi yapabilirsiniz.

print(Urun_1.isim)"Pantolon"
print(liste[0].isim)"Pantolon"

Edit: Bazı hataları düzelttim, Ekrem hocamıza teşekkürlerimi sunarım :slight_smile:

2 Beğeni

Sınıf oluşturulduğunda değil, sınıfın örneği oluşturulduğunda çalışıyor.

Burada self sınıfı değil örneği temsil ediyor.

4 Beğeni

https://python-istihza.yazbel.com/nesne_tabanli_programlama1.html

Bu sayfayı dikkatlice okumanızı tavsiye ediyorum.

Sevabına bir de;

super().__init__

fonksiyonunu anlatsanız. İstihzadan okudum ama tam anlayamadım.

__init__() nedir super().__init__ nedir?