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