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.
__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.