Reja: obyekt haqida ma'lumot MAXSUS METODLAR OBYEKTLARNI TAQQOSLASH obyekt haqida ma'lumot


Download 0.51 Mb.
bet3/4
Sana18.03.2023
Hajmi0.51 Mb.
#1280707
1   2   3   4
Bog'liq
2 modul Obyektlar o’rtasidagi munosabat, dunder metodlari

OBYEKTLARNI TAQQOSLASH

  • 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

Download 0.51 Mb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling