__str__ metodi — obyektni matn sifatida ko'rsatishOddiy obyektni print() qilsangiz, natija qanday ko'rinadi?
class Mushuk:
def __init__(self, ismi, yoshi):
self.ismi = ismi
self.yoshi = yoshi
mitti = Mushuk("Mitti", 3)
print(mitti) # <__main__.Mushuk object at 0x10f2a3b40>Bu juda noqulay! Python bilib olmaydi obyektni qanday matn sifatida ko'rsatish kerakligini. __str__ metodi buni hal qiladi — u print() chaqirilganda avtomatik ishlatiladi:
class Mushuk:
def __init__(self, ismi, yoshi):
self.ismi = ismi
self.yoshi = yoshi
def __str__(self):
return f"Mushuk: {self.ismi}, {self.yoshi} yoshda"
mitti = Mushuk("Mitti", 3)
print(mitti) # Mushuk: Mitti, 3 yoshda
toshpol = Mushuk("Toshpoʻlat", 5)
print(toshpol) # Mushuk: Toshpoʻlat, 5 yoshdaEndi print(mitti) chaqirilganda Python avtomatik mitti.__str__() ni chaqiradi va natijani chop etadi.
__str__ har xil klasslarda turlicha bo'lishi mumkin:
class Kitob:
def __init__(self, nom, muallif):
self.nom = nom
self.muallif = muallif
def __str__(self):
return f'"{self.nom}" — {self.muallif}'
k = Kitob("O'tkan kunlar", "Abdulla Qodiriy")
print(k) # "O'tkan kunlar" — Abdulla Qodiriy
class Talaba:
def __init__(self, ism, baho):
self.ism = ism
self.baho = baho
def __str__(self):
return f"Talaba: {self.ism}, Baho: {self.baho}"
t = Talaba("Ali", 95)
print(t) # Talaba: Ali, Baho: 95__init__ va __str__ kabi __ (ikki pastki chiziq) bilan o'ralgan metodlar "dunder metodlar" (double underscore) deb ataladi. Python ularni maxsus vaziyatlarda avtomatik chaqiradi.
Muhim qoidalar:
__str__ metodi print(obyekt) da avtomatik chaqiriladistr (matn) qaytarishi kerak__str__ ni yozmasang, Python xunuk texnik matn chiqaradi__init__, __str__ kabi metodlar "dunder metodlar" deb ataladiTalaba klassiga __str__ qo'shish
Quyidagi amallarni bajaring:
Talaba nomli klass yarating__init__(self, ism, baho) metodida ikkita atributni saqlang__str__(self) metodini yozing — "Talaba: {ism}, Baho: {baho}" qaytarsinprint() qilingBu mashq orqali siz:
__str__ dunder metodini yozishni o'rganasizMisol:
Kiritish:
Ali
95Chiqish:
Talaba: Ali, Baho: 95