1. Python tili imkoniyatlari Pythonni ko`chirish


Inkapsulyatsiya, merosiylik, polimorfizm



Yüklə 2,19 Mb.
səhifə59/78
tarix19.12.2023
ölçüsü2,19 Mb.
#152124
1   ...   55   56   57   58   59   60   61   62   ...   78
1. Python tili imkoniyatlari Pythonni ko`chirish

Inkapsulyatsiya, merosiylik, polimorfizm


Oldingi bobda biz Python dasturlash tilida ob`yektga mo`ljallangan dasturlashhaqida so`z yuritgan edik, endi esa bu mavzuni davom ettirgan holda OMDning inkapsulyatsiya, merosiylik va polimorfizm tushunchalari haqida gaplashamiz.

Inkapsulyatsiya


Inkapsulyatsiya – bu ob`yektning tashkil etuvchi komponentlari (metodlari va o`zgaruvchilari)ga murojaatning cheklanishidir. Inkapsulyatsiya ba`zi komponentlarga faqatgina klass ichida murojaat qilish imkonini beradi.
Inkapsulyatsiya Pythonda faqatgina dasturchilar orasidagi qaysi atributlar umumiy va qaysilari ichki ekanligi to`g`risidagi kelishuv sifatida amal qiladi.
Atribut nomining boshlanishidagi bittalik tagchiziq bu o`zgaruvchi yoki metodning klass metodlaridan tashqarida foydalanishga mo`ljallanmaganligini, lekin, 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!



>>> 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'

aAtribut nomining boshlanishidagi ikkitalik tagchiziqning mavjudligi bu atributning yanada kuchliroq himoyalanishiga asos bo`ladi: endi atributga bu nom bilan ham murojaat qilib bo`lmaydi.




L
>>> b._B__private()
Bu yashirin metod!
ekin bu ham to`la himoyani ta`minlay olmaydi, chunki, atributga _klass nimo__atribut nomi
nomi orqali murojaat qilish mumkin bo`ladi.


Merosiylik


Merosiylikning ma`nosi shundan iboratki, avlod klass ajdod bo`lgan klassning barcha atributlariga ega bo`lib, shu bilan birga ularning ba`zilarini qayta tavsiflanishi yoki avlod klassda qo`shilishi ham mumkin. Masalan biz lug`atga o`xshash o`zimizning 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)



>>> b['c'] = 4
>>> print(b)
{'a': 1, 'c': 4, 'b': 2}
>>> print(a.get('v'))
None
>>> print(b.get('v'))
0

Mydict klassi o`zini xuddi lug`at kabi tutayotganligi, faqat uning farqi – get metodi odatiy hollarda None emas, 0 ni qaytarishiga e`tibor qiling.





Yüklə 2,19 Mb.

Dostları ilə paylaş:
1   ...   55   56   57   58   59   60   61   62   ...   78




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə