„Python“

„Python Descriptors“ pamoka

„Python Descriptors“ pamoka
Naudinga bendro kodo, kurį galima pakartotinai naudoti tarp klasių, rašymo technika palaikoma „Python“ deskriptoriais arba plačiau vadinamais deskriptoriais. Jie gali atrodyti artimi paveldėjimo sąvokai, tačiau taip nėra. Tai yra tiesioginė prieigos prie privalomo pobūdžio atributų fiksavimo technika. Aprašai yra pagrindinė „Python“ funkcija, valdanti daugybę būrimų, slepiama po kalbos priedanga. Jei kada nors manėte, kad „Python“ deskriptoriai, turintys nedaug funkcinių įdiegimų, yra pažengęs dalykas, tai ši pamoka yra pagrindinė platforma, leidžianti suprasti šią galingą funkciją.

Aprašomieji metodai

Norint tai aiškiai pasakyti, klasė, kuri įgyvendina __get_ (), __set () _, arba __Ištrinti()_ objekto deskriptoriaus protokolo funkcija klasifikuojama kaip „deskriptorius“. Norėdami valdyti įvairių klasių, kurios naudoja objektą kaip nuorodą, parametrus, sudaromi „Python“ aprašai. Čia yra trys nurodyti metodai, kurie bus naudojami aprašuose:

__get __ (): Kai bandote išgauti duomenis, __get __ () atributas yra vadinamas, ir kad ir ką jis pateiktų, tai būtų suteikta kodui, reikalaujančiam vieno kintamojo vertės. Jis priskiriamas duomenų, kurie nėra duomenys, kategorijai ir yra tik skaitomas.

__set __ (): Funkcija __set __ () kviečiamas pakoreguoti parametro reikšmes, ir ši funkcija jums nieko negrąžina. Jis žinomas kaip duomenų aprašas, kuris yra ne tik skaitomas, bet ir rašomas.

__Ištrinti__(): Kai parametras pašalinamas iš objekto, __Ištrinti__() vadinama funkcija. Jis žinomas kaip duomenų aprašas, kuris yra ne tik skaitomas, bet ir rašomas.

Vykdyti aprašo protokolą turėsite tik tada, jei scenarijuje naudojate „Python“ deskriptorius. Svarbiausios protokolo funkcijos yra gauti () ir rinkinys () turėdamas vėlesnį parašą.

__get __ (self, obj, type = None) -> objektas
__set __ (self, obj, value) -> Nėra

savarankiškai yra deskriptoriaus pavyzdys.
obj yra objekto, prie kurio prijungtas jūsų deskriptorius, egzempliorius.
tipo yra objekto tipas.

Pavyzdys:

Čia mes apibrėžėme dvi klases. Klasės apraše apibrėžėme aprašų metodus. Viduje konors gauti () metodas, aš yra deskriptoriaus „val“ egzempliorius, jis gaus reikšmę „Geeks“ ir jį išsaugos. Tada tarp pateikto atributo bus sukurta eilutė su „už“. klasės aprašas (objektas):

def __get __ (savęs, obj, objtype):
grąžinti „ už “.formatas (savarankiškas.val, savęs.val)

Tada ji grąžins reikšmę į set () metodą. Tada ši funkcija patikrina vertę, ar tai eilutė, ar ne. Jei vertė yra eilutė, ji bus išsaugota atribute pavadinimu „val“. Jei reikšmė nėra eilutė, tai bus išimtis.

def __set __ (self, obj, val):
jei yra (val, str):
savarankiškai.val = val
Kitas:
raise TypeError („Pavadinimas turi būti eilutė“)

Po to vertė bus atspausdinta kaip eilutė „GeeksforGeeks“.

GFG klasė (objektas):
val = deskriptorius ()
g = GFG ()
g.val = „Geeks“
spausdinti (g.val)

Kai bandysite paleisti šį kodą, gausite šį išvestį:

„GeeksforGeeks“

Apibūdintojų paskirtis

Apibūdinkime klasę pavadinimu „namai“ su trimis charakteristikomis: vietovė, plotas ir kaina. Galite naudoti šią funkciją __init __ () inicijuoti klasės atributus.

klasės namai:

def __init __ (savęs, vietos, ploto, kainos):

Tada galite naudoti funkciją __str __ (), kuri gali grąžinti trijų atributų, kuriuos galite perduoti klasei, kurdami elementą, rezultatą. Funkcija __str __ () grąžins eilutę.

Kai vykdysite šį kodą, jis parodys iš pažiūros teisingą išvestį.

Dabar pabandykime pakeisti namo kainą į neigiamą vertę, kaip nurodyta toliau, ir įvykdykite kodą.

Visiškai nėra jokių pokyčių, išskyrus neigiamą ženklą, kaip parodyta išvestyje. Laikykis! Kažkas čia ne, ar ne? Kaip būsto kaina yra neigiama. „Python“ tai leidžia, nes „Python“ yra universali kūrimo aplinka, kuri neleidžia tikrinti tipo.

Inicializuokime teiginį „jei“ __init __ () funkcija išimčiai iškelti, jei vertė ar kaina yra mažesnė už nulį.

Dabar galite pastebėti, kad jis veikia gerai, o jei kaina yra mažesnė nei nulis, kodas sukuria vertės klaidą.

Kaip mes galime suprasti, __init_ () funkcija yra konstruktorius ir yra iškviečiama tik vieną kartą, kai kuriate klasės objektą. Todėl vėliau nepavyks pritaikyti tipo patikrinimo. „Python“ pateikia aprašus, kurie specializuojasi padėti išspręsti visas pirmiau nurodytas problemas. Dabar pradėkime naudoti aprašus tame pačiame pavyzdyje, kad gerai jį suprastume.

„Deskriptoriaus klasė“ __init_ () funkcijos vietinis kintamasis __price yra 0. Jo pradžioje dvigubas pabraukimas reiškia, kad parametras yra privatus. Jis naudojamas atskirti „Descriptor“ klasės kainos parametrą nuo namų klasės.

The __get __ () metodas grąžins kainą. Atributo egzemplioriuje yra h1, kuris yra deskriptorius. Atributo savininkas nurodo klasės pavadinimą „namai“ ir pateikia kainą.

Funkcija __set __ () turi atributą instancija kuriame yra h1 ir vertė, kurią reikia priskirti. Reikšmei patvirtinti naudojamas patikrinimas. Jei reikšmė yra sveikasis skaičius, ji bus atspausdinta, priešingu atveju kodas su „Type Error“ išimtis. Jei vertė yra mažesnė už nulį, reikšmės klaidos išimtis bus įtraukta į kodą.

The __Ištrinti__() funkcija vykdoma pašalinus parametro atributą iš objekto.

Namų klasė lieka ta pati, nors pavyzdys kaina pridedama „Descriptor“ () klasės klasė. Viduje konors __init_ () funkciją, pridėkite kainos atributą prie egzemplioriaus kainos ir jis iškvies __set_ () funkcija.

Vykdydamas šį kodą jis suteiks vertės klaidą, nes kaina niekada negali būti lygi nuliui.

Dabar pabandykite įvykdyti kodą su eilutės verte.

Tai sukels tipo klaidos išimtį.

Formuojant naują egzempliorių, esama egzemplioriaus reikšmė nepaisoma, nes deskriptoriai yra susiję su klase, o ne su egzemplioriumi. Pažvelkite žemiau:

Pirmoji reikšmė buvo pakeista su antrąja.

Išvada

Mes galime suvokti, kodėl „Python“ aprašai tapo tokia patrauklia tema ir prie kokių naudojimo scenarijų galite juos pridėti, eidami per šią pamoką.

Mėgdžiokite pelės paspaudimus, užveskite pelės žymeklį naudodami pelę „Clickless Mouse“ sistemoje „Windows 10“
Pelės ar klaviatūros naudojimas netinkamoje laikysenoje, kai naudojama per daug, gali sukelti daug sveikatos problemų, įskaitant įtampą, riešo kanalo ...
Pridėkite pelės gestus prie „Windows 10“ naudodami šiuos nemokamus įrankius
Pastaraisiais metais kompiuteriai ir operacinės sistemos labai išsivystė. Buvo laikas, kai vartotojai turėjo naudoti komandas naršydami per failų tvar...
Valdykite ir valdykite pelės judėjimą tarp kelių „Windows 10“ monitorių
„Dual Display Mouse Manager“ leidžia jums valdyti ir konfigūruoti pelės judėjimą tarp kelių monitorių, sulėtinant jo judėjimą šalia sienos. „Windows 1...