Sissejuhatus Python Magic meetodisse
Python Magic'i meetodid ei ole võlukunstid. Just nende meetodite olemus muudab need maagiliseks. Meetod pole midagi muud kui põhimõtteliselt funktsioon Pythoni klassis. Sisseehitatud meetodid, mida ei saa otseselt nimetada, on maagilised meetodid. Maagiameetodeid ei saa otse kasutada, see tähendab, et neid kutsutakse kaudselt mõne muu kõne tagajärjel. Maagiameetodeid on lihtne kindlaks teha, kuna neil on kaks ees ja kaks taga. Näiteks _add_.Neel topelt allajoonimisel on konkreetne nimi, mis on rahastajad. Nii nimetatakse _add_ kui 'dunder add dunder'.
Mis on Python Magic meetod?
- Python on tõlgendatud, objektorienteeritud programmeerimine, mis annab teile võimaluse kirjutada protseduurikoodi ja / või objektorienteeritud. Nagu me teame, lihtsustab objektide loomine keerulisi andmestruktuuride käsitlemist. Lisaks sellele võlukunsti meetodid hõlbustavad objektorienteeritud programmeerimise loomise võimalust.
- Enne maagia meetodisse sukeldumist mõistame, miks need just loodud on?
- Allpool on üks näide klassist, kus kasutatakse võlumeetodit, ja teine on ilma võlu meetodist. Esimeses neist kasutatakse maagilist meetodit __init__, mida saab kasutada korraga mitme initsiatiivmuutuja lähtestamiseks. Klassisport on määratletud kui kahe astme muutuja arvestamine, mis on nimi ja sport.
- Mõlemat esinemismuutujat saab ühe korraga määratleda, kasutades maagilist meetodit __inti__. Juhul 2 korratakse sama asja, kuid seekord kasutame eksemplari muutuja lähtestamiseks komplekti meetodit. Siin tuleb 2 muutuja jaoks seda meetodit kutsuda kaks korda.
Siin näeme maagilise meetodi võlu, ühe korraga saame määratleda mitu muutuvat esinemisjuhtu.
class Sports():
def __init__(self, name, sport):
self.name = name
self.sport= sport
def get_name(self):
return self.name
def get_sport(self):
return self.sport
first = Sports('john', 'Game of Thrones')
print(first.get_name())
print(first.get_sport())
Väljund:
class Sports():
def set_name(self, name):
self.name = name
def set_sport(self, sport):
self.sport= sport
def get_name(self):
return self.name
def get_sport(self):
return self.sport
second = Sports()
second.set_name('Messi')
second.set_sport('Soccer')
print(second.get_name())
print(second.get_sport())
Väljund:
Nii et maagiameetodid on põhimõtteliselt midagi sellist, mis hõlbustab objektorienteeritud programmeerimist.
Saame nüüd aru, mis need on?
- Maagiameetodid on objektorienteeritud Pythoni jaoks kõik.
- Pythoni võlumeetodeid võib määratleda kui erimeetodeid, mis võivad klassile “võlujõudu” lisada.
- Need võlusõnad algavad ja lõpevad topelt allakriipsudega, näiteks _init_ või _add_.
Pythoni maagia meetodid
Pythonil on mitmeid sisseehitatud võluviise, millest mõned nimetada:
- __selles__
- __uusi__
- __del__
- __abs__
- __lisama__
- __sub__
- __mul__
Arutame mõnda võlumeetodit, et seda paremini mõista.
Võtame nüüd maagia meetodi __add__:
A=5
A+3
Väljund: 8
Sama saab teha võlukanalüüsiga __add__.
A.__add__(5)
Väljund: 10
Siin kasutatakse operaatori plussi numbrilise muutuja A numbrilise väärtuse lisamiseks. Sama saab teha sisseehitatud __add__ maagilise meetodi abil. Kuid nagu me arutasime, ei peaks maagiameetodeid kutsuma otse, vaid sisemiselt, mõne muu meetodi või toimingu kaudu.
Komponendid
Konkreetsuse huvides võime maagia meetodid komponentide kirjeldamise asemel eraldada eri kategooriatesse.
1. Objekti konstruktor ja algataja
- Maagiameetodeid kasutatakse laialdaselt pythoni programmeerimise põhialustes klasside konstrueerimisel ja initsialiseerimisel.
- Nagu me arutasime __init__ maagia meetodit. Seda meetodit kasutatakse klassi objekti initsialiseerimise määratlemiseks.
- __init__ pole esimene objekti loomisel kasutatav meetod, kuid kutsutakse välja esimene võluviis __new__, mis loob uue esinemisjuhu ja kutsub seejärel __init__ võlumeetodi.
Vaatame sama näite:
class AbstractClass(object):
def __new__(cls, a, b):
print("calling magic method__new__")
instance = super(AbstractClass, cls).__new__(cls)
instance.__init__(a, b)
def __init__(self, a, b):
print('calling magic method__init__')
print ("Initializing Instance", a, b)
a=AbstractClass(2, 3)
Väljund:
helistamine maagia meetod __new__
maagilise meetodi kutsumine__init__
2. astme initsialiseerimine 3
__uusi__ saab kasutada väga erinevatel viisidel, kuid see näitab lihtsat näidet selle võlumeetodi kohta.
2. Võrdlusmaagia meetodid
Pythonil on mitmeid võlumeetodeid, mis on loodud objektide intuitiivseks võrdlemiseks operaatorite kasutamisega.
Mõned neist on loetletud allpool:
- __lt __ (ise, muu): kasutatakse kutsumiseks võrdlemiseks, kasutades operaatorit <.
- __le __ (ise, muu): kasutatakse kutsumiseks võrdluseks, kasutades operaatorit <=.
- __eq __ (ise, muu): kasutatakse tavaliselt võrdlemiseks, kasutades operaatorit ==.
- __ne __ (ise, muu): kasutatakse tavaliselt võrdlemiseks, kasutades! = operaatorit.
- __ge __ (ise, muu): kasutatakse kutsumiseks võrdluseks operaatori> = abil.
3. Infix-operaatorid
Pythonil on võluviisina tüüpilised sisseehitatud binaarsed operaatorid.
Mõned neist on loetletud allpool:
- __add__ (ise, muu): lisamiseks
- __sub__ (ise, muu): lahutamiseks
- __mul __ (ise, muu): korrutamiseks
Python Magic meetodi eelised
Python pakub "võlumeetodeid", kuna need täidavad teie programmi jaoks maagiat.
Suurimad eelised on:
Pythoni maagilised meetodid pakuvad lihtsat viisi, kuidas panna objekte käituma nagu sisseehitatud tüübid, mis tähendab, et põhioperaatorite toimimiseks on võimalik vältida intuitiivseid või ebastandardseid viise. Näiteks
meil on kaks sõnastikku 'dicta' ja 'dicta'
dicta = (1 : "XYZ")
dictb = (2 : "LMN")
dict1 + dict2
Väljund:
Traceback (viimane kõne viimane):
Fail “python”, rida 1, sisse
TypeError: +: 'dict' ja 'dict' toetamata operanditüübid / tüübid
Nüüd lõppeb see tüübiveaga, sest sõnastiku tüüp ei toeta lisamist. Nüüd saame laiendada sõnastikuklassi ja lisada võlumeetodi __add__:
class AddDict(dict):
def __add__(self, dicts):
self.update(dicts)
return AddDict(self)
dicta = AddDict((1 : "XYZ"))
dictb = AddDict((2 : "LMN"))
print (dicta + dictb)
Nüüd saame soovitud väljundi.
(1: 'XYZ', 2: 'LMN')
Nii juhtus äkki maagia just maagiameetodi lisamisega. Viga kadus, mida me varem saime.
Järeldus
Maagilised meetodid on spetsiaalsed meetodid, millele tuginetakse kaudselt ja mida identifitseeritakse dundide või kahekordsete allajoonetega, näiteks __add__. Nüüd, kui Pythoni klasse paremini kasutada, peab teadma vähemalt mõnda võluviisi, näiteks __init__, __new__. Võrdlusoperaatori maagilised meetodid annavad pythonile eelise, kus objektide esinemisjuhte saab võrrelda nii võrdsuse kui ka ebavõrdsuse osas. Lühidalt öeldes - maagiline meetod - kasutades maagiat Pythoni programmeerimiseni, vähendades keerukust.
Soovitatavad artiklid
See on juhend Python Magic meetodi kohta. Siin käsitleme Python Magic -meetodi sissejuhatust, selle komponente ja eeliseid ning ka mõnda näidet. Lisateavet leiate ka meie muudest soovitatud artiklitest -
- Palindroom PHP-s
- Pythoni märksõnad
- Pythoni IDE Windowsi jaoks
- Kuigi silmus Pythonis
- C ++ märksõnad