Obyektlar o'rtasidagi munosabat, dunder metodlari


Download 12.76 Kb.
bet3/4
Sana26.06.2023
Hajmi12.76 Kb.
#1655739
1   2   3   4
Bog'liq
Reja obyekt haqida ma\'lumot MAXSUS METODLAR OBYEKTLARNI TAQQOSL-fayllar.org

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 12.76 Kb.

    Do'stlaringiz bilan baham:
  • 1   2   3   4




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