Obyektlar o'rtasidagi munosabat, dunder metodlari
Download 12.76 Kb.
|
Reja obyekt haqida ma\'lumot MAXSUS METODLAR OBYEKTLARNI TAQQOSL-fayllar.org
- Bu sahifa navigatsiya:
- Taqqoslash usullaridan iborat
OBYEKTLARNI TAQQOSLASHOBYEKTLARNI TAQQOSLASH Taqqoslash operatorlari yordamida biz turli obyektlarni solishtirishimiz mumkin. Taqqoslash natijasi mantiqiy qiymat ( Trueyoki False) ko'rinishida bo'ladi. x , y = 5 , 10 chop etish ( x > y ) Natija:False Keling endi Avto klassidan 2 ta obyekt yaratamiz, va ularni ajratib ko'ramiz: avto1 = Avto ( "GM" , "Malibu" , "Qora" , 2020 , 40000 ) avto2 = Avto ( "GM" , "Lacetti" , "Oq" , 2020 , 20000 ) avto1 > avto2 Natija:TypeError: '>' not supported between instances of 'Avto' and 'Avto' Xatolik. Demak bu ikki obyektni solshtirib bo'lmas ekan. Biz taqqolash operatorlariga murojat qilganimizda, Python obyektlar ichida taqqoslash uchun maxsus metodlarni qidiradi, agar metodlar topilmasa yuqoridagi kabi TypeErrorqaytaradi. Taqqoslash usullaridan iborat:Taqqoslash usullaridan iborat: Usul Operator x.__lt__(self,y) x x.__le__(self,y) x<=y x.__gt__(self,y) x>y x.__ge__(self,y) x>=y x.__eq__(self,y) x==y x.__ne__(self,y) x!=y Yuqoridagi obyektlardan yarmi uchun metodlar uchun etarli, misol uchun __lt__(x Keling tushunarli bo'lishi uchun Avto klassiga obyektlarni solishtirish uchun metod yozamiz. Deylik, biz obyektlarni narhi bo'yicha solishtirmoqchimiz, unda klassimizga topilma metodlarni qo'shamiz (klassni to'liq yozmadik, faqat qo'shilgan metodlarni keltiramiz): def __eq__ ( self , boshqa_avto ):def __eq__ ( self , boshqa_avto ): """Tenglik""" o'zini qaytarish . narh == boshqa_avto . narh def __lt__ ( self , boshqa_avto ): """Kichik""" o'zini qaytarish . narh < boshqa_avto . narh def __le__ ( o'zini , boshqa_avto ): """Kichik yoki teng""" o'zini qaytarish . narh <= boshqa_avto . narh Kodimizga e'tibor nazorat biz tenglik ( __eq__) yoki kichiklikni ( __lt__) tekshirmoqchi bo'lganimizda ikki avtoning aynan narhi bo'yicha solishtiramiz ( self.narh == boshqa_avto.narh). Mana endi avtolarni solishtirsak bo'ladi: avto1 = Avto ( "GM" , "Malibu" , "Qora" , 2020 , 40000 ) avto2 = Avto ( "GM" , "Lacetti" , "Oq" , 2020 , 20000 ) chop etish ( avto1 > avto2 ) Natija:False avto3 = Avto ( "Honda" , "Accord" , "Oq" , 2017 , 40000 ) chop etish ( avto1 == avto3 ) Natija:True Download 12.76 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling