Pythonni mustaqil


-bob: Inkapsulyatsiya, vorislik, polimorfizm



Download 2,79 Mb.
bet80/109
Sana31.12.2021
Hajmi2,79 Mb.
#223336
1   ...   76   77   78   79   80   81   82   83   ...   109
Bog'liq
PYTHONNI MUSTAQIL O‘RGANAMIZ

29-bob: Inkapsulyatsiya, vorislik, polimorfizm
Avvalgi bobda biz Python dasturlash tilida obyektga mo‘ljallangan dasturlash haqida so‘z yuritgan edik, endi o‘sha mavzuni davom ettirgan holda, OMDning inkapsulyatsiya, vorislik va polimorfizm tushunchalari haqida gaplashamiz.
Inkapsulyatsiya
Inkapsulyatsiya bu – obyektning tashkil etuvchi komponentlari (metod va o‘zgaruvchilari)ga murojaatning cheklanishi. Inkapsulyatsiya ba’zi komponentlarga faqat klass ichidagina murojaat qilish imkonini beradi.
Inkapsulyatsiya Pythonda faqat dasturchilar orasidagi qaysi atributlar umumiy va qaysilari ichki ekanligi to‘g‘risidagi kelishuv sifatidagina amal qiladi.
Atribut nomining boshlanishidagi bittalik tagchiziq bu o‘zgaruvchi yoki metodning klass metod-laridan tashqarida foydalanish uchun mo‘ljallanmaganligini, ammo atributga shu nom bo‘yicha murojaat etish mumkinligini bildiradi.

class A:
def _private(self):


print("Bu yashirin metod!")


  • a = A()




  • a._private() Bu yashirin metod!

Atribut nomining boshlanishidagi ikkitalik tagchiziqning mavjudligi bu atributning yanada kuchlir-oq himoyalanishiga asos bo‘ladi – endi atributga shu nom bilan ham murojaat qilib bo‘lmaydi.




  • class B:

def __private(self):


print("Bu yashirin metod!")


  • b = B()




  • b.__private()

Traceback (most recent call last):


File "", line 1, in
AttributeError: 'B' object has no attribute '__private'
Lekin bu ham to‘liq himoyani ta’minlay olmaydi, chunki atributga _KlassningNomi_Atributning-Nomi orqali murojaat qilish mumkin.


  • b._B__private() Bu yashirin metod!

102



Vorislik
Vorislik nimani anglatadi? Avlod klass ajdod klassning barcha atributlariga ega bo‘lish bilan birga, atributlarning ba’zilari qayta tavsiflanishi yoki avlod klassga qo‘shilishi mumkin. Masalan, biz lug‘atga o‘xshash o‘z shaxsiy klassimizni yaratishimiz mumkin:



  • class Mydict(dict):

def get(self, key, default = 0):


return dict.get(self, key, default)


  • a = dict(a=1, b=2)




  • b = Mydict(a=1, b=2)

Mydict klassi o‘zini xuddi lug‘at kabi tutayotganligiga, faqat farqi – get metodi odatiy hollarda None emas, 0 ni qaytarishiga e’tibor bering.




  • b['c'] = 4




  • print(b)

{'a': 1, 'c': 4, 'b': 2}




  • print(a.get('v')) None




  • print(b.get('v'))

0
Polimorfizm


Polimorfizm bu – aynan bitta metodning turli klasslarda turlicha amal qilishi. Masalan, biz ikkita sonni bir-biriga qo‘shishimiz, ikkita satrni bir-biriga ulashimiz mumkin. Bunda biz bir-biridan farqli ikkita natijaga erishamiz, chunki sonlar va satrlar bir-biridan farqli klasslardir.



  • 1 + 1

2


  • "1" + "1" '11'

103


Download 2,79 Mb.

Do'stlaringiz bilan baham:
1   ...   76   77   78   79   80   81   82   83   ...   109




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2025
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish