Mavzu: Obyektlar o’rtasidagi munosabat, dunder metodlari


Download 1.17 Mb.
Sana18.03.2023
Hajmi1.17 Mb.
#1282931
Bog'liq
120-20 Hazratqulov Aziz 1.3

Mavzu:Obyektlar o’rtasidagi munosabat, dunder metodlari

Reja:


OOP nima ?
Obyektlar o`rtasidagi munosabat
Dunder metodi

OOP nima?

  • Dasturlashni o’rganar ekanmiz, albatta object oriented programming (OOP) ya’ni obyektga yo’naltiriglan dasturlash tushunchasiga kelamiz. Ko’pchilik uchun bu bosqich biroz tushunarsiz va murakkabdek tuyuladi. Aslida unday emas. Keling bugun object oriented programming va unga tegishli tamoyillar haqida gaplashamiz. Object oriented dasturlashda o’zaro bo’gliq bo’lgan o’zgaruvchilar va funksiyalar bitta konteynerga jamlanadi va bunday konteynerlar obyekt deb ataladi. Bir obyektga tegishli o’zgaruvchilar uning xususiyatlari, unga tegishli funksiyalar esa metodlari deb ataladi.

Dunder usuli

Dunder usuli Python tarjimoni va ma'lum bir Python sinfini yaratgan shaxs o'rtasida shartnoma vazifasini bajaradi.

Sinfni yaratgan shaxs Python-ga belgi ob'ektlarda ishlashini bilish uchun usulni int aniqladi .

Qo'shish dunder usuliga tayanadi, lekin boshqa ko'plab operatsiyalar ham shunday. Aslida, siz ikkita narsa teng yoki yo'qligini so'rashga harakat qilsangiz, bu __eq__usuldan foydalanadi . Hatto tenglik Python-dagi dunder usullariga tayanadi.

 

Dunder usullarini qo'lda chaqirish

Dunder usullarini qo'lda chaqirish

Dunder usullari - bu sinfni yaratgan shaxs va Pythonning o'zi o'rtasidagi shartnoma. Python dasturchilari sifatida biz 

dunder usullarini to'g'ridan-to'g'ri chaqirmasligimiz kerak . Buning o'rniga, biz ushbu dunder usullariga tayanadigan yuqori

darajadagi operatsiyalardan ( +va operatorlar kabi) foydalanishimiz kerak .==

Keling, nima uchun biz to'g'ridan-to'g'ri dunder usullarini chaqirmasligimiz kerakligi haqidagi misolni ko'rib chiqaylik .

Agar biz butun son va suzuvchi nuqta o'rtasidagi tenglikni qo'lda chaqirish orqali tekshirsak __eq__, biz buni ko'ramiz.

Dunder usullari ba'zi o'rnatilgan funktsiyalarni quvvatlaydi

Dunder usullari ba'zi o'rnatilgan funktsiyalarni quvvatlaydi

+, -va *kabi Python quvvat operatorlarida Dunder usullari ==. Ular, shuningdek , ba'zi o'rnatilgan funktsiyalarni quvvat bilan ta'minlaydi .

Misol uchun, agar siz biror narsaning uzunligini so'rasangiz:

>>> name = "Trey" >>>

(name) 4

Bu usulga bog'liq __len__:

>>> name.__len__() 4

Funktsiya len o'rnatilgan funktsiyadir (usuldan farqli o'laroq), chunki Python uzunlikka ega bo'lishni ob'ektning juda asosiy xususiyati

deb qaror qildi. Shunday qilib, Python o'rnatilgan funksiyaga ega bo'lib len, u biror narsaning uzunligi va uzunligi nima ekanligini aniqlash uchun

ishlatiladigan dunder usulini topshiradi.

Operatorlarni ortiqcha yuklash uchun dunder usullaridan foydalanishingiz mumkin

Operatorlarni ortiqcha yuklash uchun dunder usullaridan foydalanishingiz mumkin

Shunday qilib, dunder usullari, Python-dagi deyarli barcha operatorlarni va hatto ba'zi o'rnatilgan funktsiyalarni quvvatlang.

Dunder usuli - bu usul (Python biladi), uning oldida ikkita pastki chiziq va undan keyin ikkita pastki chiziq mavjud.

Bu ma'lum bir sinfni amalga oshirgan shaxs va Python tarjimoni o'rtasidagi shartnoma bo'lib, u aniq dunder usulini qachon chaqirishni biladi.

Agar siz Python-da o'z sinflaringizni yaratsangiz, operatorni ortiqcha yuklash uchun dunder usullaridan foydalanishingiz mumkin. Va bu aslida uchinchi tomon kutubxonasi mualliflari kutubxonalaridagi ob'ektlarni Python ob'ektlari kabi harakat qilishlari uchun qiladilar.

PYTHON ___GETITEM__ DUNDER USULI

  • PYTHON ___GETITEM__ DUNDER USULI
  • Ba'zan ob'ektlar ro'yxatlarni o'z ichiga olishi mumkin va biz ro'yxatdan qiymatni olish uchun ob'ektni indekslashimiz kerak bo'lishi mumkin. Buni tushunish uchun keling, boshqa misol keltiraylik . Tasavvur qiling-a, siz foydalanuvchilarga aktsiyalarni sotishga yordam beradigan kompaniyada ishlaysiz. Har bir foydalanuvchining kun davomidagi savdolari/operatsiyalari haqidagi ma'lumotlarni o'z ichiga olgan kundalik tranzaksiya kitobi bo'ladi . Biz bunday sinfni quyidagi yo'llar bilan amalga oshirishimiz mumkin:

Bu erda __getitem__ ni ko'rdingizmi? Bu, aslida, ushbu sinf ob'ektlarida indeksatsiyadan foydalanishga imkon beradi:

  • Bu erda __getitem__ ni ko'rdingizmi? Bu, aslida, ushbu sinf ob'ektlarida indeksatsiyadan foydalanishga imkon beradi:

E`tiboringiz uchun rahmat


120-20 guruh talabasi Hazratqulov Aziz
Download 1.17 Mb.

Do'stlaringiz bilan baham:




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