- OBYEKTLARNI 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
Do'stlaringiz bilan baham: |