Birinchi bo'limda self.atribut orqali atributlar belgiladik. Bu instance atributlar — ya'ni har bir obyektning o'ziga xos ma'lumotlari.
class Talaba:
def __init__(self, ism, baho):
self.ism = ism
self.baho = baho
talaba1 = Talaba("Ali", 90)
talaba2 = Talaba("Vali", 75)
print(talaba1.ism) # Ali
print(talaba2.ism) # Vali — talaba1 ga ta'sir qilmagan
print(talaba1.baho) # 90
print(talaba2.baho) # 75talaba1 va talaba2 — ikki mustaqil obyekt. Ularning ism va baho atributlari bir-biridan butunlay alohida saqlanadi. Birini o'zgartirish ikkinchisiga ta'sir qilmaydi:
talaba1.baho = 95 # faqat talaba1 o'zgaradi
print(talaba1.baho) # 95
print(talaba2.baho) # 75 — o'zgarmaganInstance atributlar __init__ da yaratilmasa ham, keyinroq qo'shish mumkin. Ammo __init__ ichida yaratish yaxshi amaliyot — shunda barcha zarur atributlar har doim mavjud bo'ladi:
class Mahsulot:
def __init__(self, nom, narx):
self.nom = nom # instance atribut
self.narx = narx # instance atribut
p1 = Mahsulot("Olma", 5000)
p2 = Mahsulot("Nok", 8000)
p3 = Mahsulot("Uzum", 12000)
print(f"{p1.nom}: {p1.narx} so'm") # Olma: 5000 so'm
print(f"{p2.nom}: {p2.narx} so'm") # Nok: 8000 so'm
print(f"{p3.nom}: {p3.narx} so'm") # Uzum: 12000 so'mMuhim qoidalar:
self. bilan yaratiladi va saqlanadiobyekt.atribut orqali murojaat qilinadi__init__ da barcha zarur atributlarni yaratish eng yaxshi amaliyotMahsulot klassini yaratish
Quyidagi amallarni bajaring:
Mahsulot nomli klass yarating__init__(self, nom, narx) metodida ikkita instance atribut saqlang"Mahsulot: {nom}""Narx: {narx} so'm"Bu mashq orqali siz:
Misol:
Kiritish:
Olma
5000Chiqish:
Mahsulot: Olma
Narx: 5000 so'm