Питхон

Водич за Питхон Десцрипторс

Водич за Питхон Десцрипторс
Корисну технику за писање генеричког кода који би се могао поново користити између класа подржавају Питхон дескриптори или познатији као дескриптори. Можда звуче блиско појму наследства, али нису. Ово је директна техника за хватање приступа атрибутима који имају обавезујућу природу. Дескриптори су основна функција Питхона која управља многим врачањем, скривеним под насловом језика. Ако сте икада осетили да су Питхон дескриптори са мало функционалних примена напредна тема, онда је ово упутство крајња платформа која ће вам помоћи да разумете ову моћну функцију.

Методе дескриптора

Јасно речено, класа која спроводи __добити_(), __комплет()_, или __делете () _ функција протокола дескриптора за објекат класификована је као „дескриптор“. Да би се управљало параметрима различитих класа које користе објекат као референцу, праве се Питхон дескриптори. Ево три наведене методе које ће се користити у дескрипторима:

__добити__(): Када покушате да издвојите податке, __добити__() атрибут се позива и све што пружа је оно што би било дато коду који захтева вредност једне променљиве. Категоризиран је као дескриптор без података и читљив је само.

__комплет__(): Функција __комплет__() позива се за подешавање вредности параметара и ова функција вам ништа не враћа. Познат је као дескриптор података који је не само читљив већ и записљив.

__избриши __ (): Кад год се параметар уклони из објекта, __избриши __ () функција се зове. Познат је као дескриптор података који је не само читљив већ и записљив.

Морате применити протокол дескриптора само ако у својој скрипти користите Питхон дескрипторе. Најважније функције протокола су добити() и комплет() имајући накнадни потпис.

__гет __ (селф, обј, типе = Ноне) -> објект
__сет __ (селф, обј, валуе) -> Ниједан

себе је инстанца дескриптора.
обј је инстанца објекта на који је повезан ваш дескриптор.
тип је врста објекта.

Пример:

Овде смо дефинисали две класе. У класи Десцриптор дефинисали смо методе дескриптора. У добити(), селф је инстанца за дескриптор 'вал', добиће вредност 'Геекс' и чува је. Тада ће направити низ са 'фор' повезаним између наведеног атрибута. дескриптор класе (објект):

деф __гет __ (селф, обј, објтипе):
врати „ за “.формат (селф.вал, само.вал)

Затим ће вратити вредност методи сет (). Ова функција затим проверава вредност, било да је реч о низу или не. У случају да је вредност низ, она ће бити сачувана у атрибуту под називом 'вал'. Ако вредност није низ, избациће изузетак.

деф __сет __ (селф, обј, вал):
иф исинстанце (вал, стр):
себе.вал = вал
иначе:
подићи ТипеЕррор („Име треба бити низ“)

Након тога, вредност ће се исписати у облику низа 'ГеексфорГеекс'.

класа ГФГ (објекат):
вал = дескриптор ()
г = ГФГ ()
г.вал = "Геекс"
штампати (г.вал)

Када покушате да покренете овај код, добићете следећи излаз:

ГеексфорГеекс

Сврха дескриптора

Опишимо класу названу „дом“ са три карактеристике, и то: лок, подручје и цена. Можете користити функцију __у томе__() за иницијализацију атрибута класе.

разредна кућа:

деф __инит __ (селф, лоц, ареа, прице):

Затим можете користити функцију __стр __ () која може вратити резултат од три атрибута која бисте могли проследити класи приликом изградње ставке. Функција __стр __ () ће вратити низ.

Када извршите овај код, он ће приказати наизглед исправан излаз.

Покушајмо сада да променимо цену куће на негативну вредност, као у наставку, и извршимо код.

Уопште нема промене, осим негативног предзнака, као што је приказано у излазу. Сачекај! Нешто није у реду овде, зар не?? Како то да је цена куће негативна. Питхон то дозвољава јер је Питхон свестрано развојно окружење које посебно не дозвољава проверу типа.

Иницирајмо израз 'иф' у __у томе__() функција за покретање изузетка ако је вредност или цена мања од нуле.

Од сада ћете приметити да се добро понаша, а ако је цена мања од нуле, код генерише грешку вредности.

Као што бисмо могли разумети, __у томе_() функција је конструктор и позива се само једном када направите објекат класе. Стога касније прилагођена провера типова неће успети. Питхон нуди дескрипторе који су специјализовани за помоћ у решавању свих горе наведених проблема. Почнимо сада да користимо дескрипторе у истом примеру да бисмо га добро разумели.

Класа дескриптора ' __у томе_() функција има локалну променљиву __цена на 0. На почетку, двоструко подвлачење подразумева да је параметар приватан. Користи се за разликовање параметра цене класе Десцриптор од домаће класе.

Тхе __добити__() метода ће вратити цену. Инстанца атрибута садржи х1, која је инстанца дескриптора. Власник атрибута односи се на назив класе 'дом' и враћа цену.

Функција __комплет__() има атрибут инстанци који садржи х1 и вредност коју треба доделити. Провера се користи за потврду вредности. Ако је вредност цео број, исписат ће се, у супротном, код са изузећем Типе Еррор. Ако је вредност испод нуле, изузетак Грешка вредности ће бити бачен у код.

Тхе __избриши __ () функција се извршава када се атрибут параметра уклони из објекта.

Домаћа класа остаје иста, иако инстанца Цена класе Десцриптор () се додаје. У __у томе_() функција, додајте атрибут прице у цену инстанце и она ће позвати __комплет_() функцију.

Током извођења овог кода добиће грешку у вредности јер цена никада не може бити нула.

Сада покушајте да извршите код са низом вредности.

Добациће изузетак грешке типа.

Постојећа вредност инстанце се поништава приликом формирања нове инстанце, јер су дескриптори повезани са класом, а не инстанцом. Погледајте доле:

Прва вредност је замењена другом.

Закључак

Можемо схватити зашто су дескриптори из Питхона постали тако фасцинантна тема и у какве сценарије употребе их можете додати пролазећи кроз овај водич.

Водич за сенку Томб Раидера за Линук
Схадов оф тхе Томб Раидер је дванаести додатак серији Томб Раидер - акцијско-авантуристичкој игри коју је створио Еидос Монтреал. И критичари и фанови...
Како појачати ФПС у Линуку?
ФПС је скраћеница за Фрејмова у секунди. Задатак ФПС-а је да мери брзину кадрова у репродукцијама видео записа или играчким перформансама. Једноставни...
Најпопуларније лабораторијске игре Оцулус Апп
Ако сте власник Оцулус слушалица, онда морате бити упознати са бочним учитавањем. Бочно учитавање је поступак инсталирања не-продавничког садржаја на ...