__lt__
__lt__() usuli
__lt__() usuli ("less than", ya’ni "kichikroq") < operatori o‘zingizning obyektlaringiz uchun nima qilishini boshqaradi.
Misol
Ikki Person obyektni yoshga qarab solishtiring:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __lt__(self, other):
return self.age < other.age
p1 = Person("Emil", 22)
p2 = Person("Tobias", 19)
print(p1 < p2)
O‘zingiz sinab ko‘ring »
__lt__() bo‘lmaganda taqqoslash
__lt__()siz ikkita obyektni < bilan taqqoslash xatoga olib keladi:
Misol
__lt__()ni olib tashlang va taqqoslash muvaffaqiyatsiz tugaydi:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Emil", 22)
p2 = Person("Tobias", 19)
print(p1 < p2)
O‘zingiz sinab ko‘ring »
__lt__() bilan saralash
Python sorted() kabi funksiyalar yordamida obyektlarni saralashda ham __lt__()dan foydalanadi.
sorted() funksiyasi berilgan obyektlarni __lt__() usulida ko‘rsatilganidek saralab, list ko‘rinishida qaytaradi.
Misol
Person obyektlar ro‘yxatini yoshga qarab tartiblang:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __lt__(self, other):
return self.age < other.age
p1 = Person("Emil", 22)
p2 = Person("Tobias", 19)
p3 = Person("Linus", 15)
x = sorted([p1, p2, p3])
print(x[0].age)
O‘zingiz sinab ko‘ring »
Eslatma: sorted() yosh bo‘yicha tartiblangan yangi listni qaytaradi.
x[0] — yoshi eng kichik Person.
Siz xohlagancha ko‘p obyektlarni saralashingiz mumkin - faqat ikkita yoki uchta emas.
__lt__ bo‘lmaganda saralash
sorted() funksiyasi < ga tayanadi, shuning uchun __lt__() bo‘lmasa, u xuddi shunday xato bilan ishlamay qoladi:
Misol
__lt__()ni olib tashlang va saralash muvaffaqiyatsiz tugaydi:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Emil", 22)
p2 = Person("Tobias", 19)
p3 = Person("Linus", 15)
x = sorted([p1, p2, p3])
O‘zingiz sinab ko‘ring »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
