Dinamik tiplashtirilgan



Download 2,94 Mb.
bet104/117
Sana01.02.2022
Hajmi2,94 Mb.
#422447
1   ...   100   101   102   103   104   105   106   107   ...   117
Bog'liq
Pyton tili8 (3)

13.10. Sinf hususiyatlari

Keyinchalik biror hususiyatni oʻzgartirish, oʻchirish, axborot olishda yodam berishi uchun sinflarning ichida identifikatorlar yaratish mumkin. Bunday identifikatorlarni property() funksiyasi yordamida tashkil qilish mumkin. Funksiyaning umumiy koʻrinishi quyidagicha:


=property([,[,[,]]])
Dastlabki uchta parametrda sinfning mos metodlariga havolalar koʻrsatiladi. Qiymat olishga urinish boʻlganda birinchi parametrda koʻrsatilgan metod ishga tushiriladi. Qiymat berish uchun ikkinchi parametrdagi metod, oʻchirishda esa uchinchi metodga murijaat qiliandi. Agar biror parametr sifatida None qiymati berilgan boʻlsa, bu holatda mos metod ishlamaydi. Masalan:
class Namuna:
def __init__(self, value):
self.__var = value
def get_var(self): # oʻqish
return self._var
def set_var(self, value): # yozish
self.__var = value
def del_var(self): # oʻchirish
del self.__var
v = property(get_var, set_var, del_var, "hujjatlashtrish satri")
c = Namuna(5)
c.v = 35 # set_var() metodiga murojaat
print(c.v) # get_var() metodiga murojaat
del c.v # del_var() metodiga murojaat
Python tili hususiyatlarni aniqlshning dekoratorlarda foydalanishga moʻljallangan getter(), setter() hamda delete() kabi muqobil varinatlarni ham nazarda tutadi. Masalan:
class Namuna:
def __init__(self, value) :
self.__var = value
@property
def v(self) : # oʻqish
return self._var
@v.setter
def v(self, value): # yozish
self._var = value
@v.deleter # oʻchirish
def v(self):
del self._var
c = Namuna(5)
c.v = 35 # yozish
print(c.v) # oʻqish
del c.v # oʻchirish
Abstrakt hususiyatlarni aniqlash imkoniyati ham mavjud boʻlib, bu holda uni amalga oshiruvchi barcha metodlari hosila sinfida qayta aniqlanishi lozim. Bu muammoni abc modulidagi @abstractmethod dekoratori yordamida hal qilish mumkin.
from abc import ABCMeta, abstractmethod
class Namunal(metaclass=ABCMeta):
def __init__(self, value) :
self.__var = value
@property
@abstractmethod
def v(self): # oʻqish
return self.__var
@v.setter
@abstractmethod
def v(self, value): # yozish
self .__var = value
@v.deleter
@abstractmethod
def v(self): # oʻchirish
del self.__var

Download 2,94 Mb.

Do'stlaringiz bilan baham:
1   ...   100   101   102   103   104   105   106   107   ...   117




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
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