Sınıflar, hemen tüm programlama dillerinde olan ve kendilerine ait alanları ve metodları saklayabilen kalıplardır. Bu kalıplar ile türeteceğimiz numunelere ise nesne adını veriyoruz. Örnek vermek gerekirse araba bir sınıf ise bmw ve mercedes de birer nesne olabilir.
class araba:
lastikSayisi = 4
bmw = araba()
mercedes = araba()
print(bmw.lastikSayisi) #4
print(mercedes.lastikSayisi) #4
Bu basit sınıf (class) yaratma ve nesne türetme işleminde sadece lastikSayisi özelliği olan araba adında bir sınıf yarattık ve bu sınıftan bmw ve mercedes adında iki adet nesne ürettik. Peki bmw ile mercedes aynı sınıftan üretildiklerinde aynı şey mi olmak zorundalar, bu nesneleri birbirinden nasıl ayırt edeceğiz? Bunun için de sınıfların özelliklerini artırıp nesne yaratma esnasında bu özelliklerin değerlerini belirleme işlemini yapacağız.
Şimdi araba dediğimiz şey için 3 adet özellik belirleyelim ve nesne üretme esnasında her bir nesne için bu özellikleri belirleyelim: marka, lastikSayisi ve segment
class araba:
def __init__(self, marka, lastikSayisi, segment):
self.marka = marka
self.lastikSayisi = lastikSayisi
self.segment = segment
bmw = araba("BMW",4,"Premium")
mercedes = araba("Mercedes",4,"Premium")
print("BMW:")
print(bmw.marka) #BMW
print(bmw.lastikSayisi) #4
print(bmw.segment) #Premium
print("MERCEDES:")
print(mercedes.marka) #MERCEDES
print(mercedes.lastikSayisi) #4
print(mercedes.segment) #Premium
self anahtar kelimesi ile artık nesnelerin özelliklerini, tanımlama esnasında aktarabiliyoruz. Bu anahtar kelimeyi C# programlama dilindeki this anahtar sözcüğü gibi düşünebiliriz.