Johdatus Python Magic -menetelmään

Python Magic -menetelmät eivät ole joitain velhoja. Juuri näiden menetelmien luonne tekee niistä maagisia. Menetelmä ei ole muuta kuin periaatteessa toiminto Python-luokassa. Sisäiset menetelmät, joita ei voida suoraan kutsua, ovat ”taikuusmenetelmiä”. Maagisiin menetelmiin ei voida vedota suoraan, ts. Ne kutsutaan epäsuorasti toisen puhelun seurauksena. Taikuumenetelmät on helppo tunnistaa, koska niillä on kaksinkertainen korostettu yksi edessä ja toinen takana. Esimerkiksi _add_.Näillä kaksinkertaisilla alaviivoilla on erityinen nimi, joka on rahoittajat. Joten _add_ kutsutaan 'dunder add dunder'.

Mikä on Python Magic -menetelmä?

  • Python on tulkittu, olio-ohjelmointi, joka antaa sinulle mahdollisuuden kirjoittaa prosessikoodi ja / tai olio-suuntautunut. Kuten tiedämme, Objektien luominen yksinkertaistaa monimutkaisten tietorakenteiden käsittelyä. Tämän lisäksi taikuusmenetelmät helpottavat kykyä luoda oliokeskeistä ohjelmointia.
  • Ennen kuin sukellamme taikuumenetelmään, ymmärrämme miksi ne ensin luodaan?
  • Alla on yksi esimerkki luokan ensimmäisestä taikuusmenetelmää käyttävästä ja toinen on ilman taikuusmenetelmää. Ensimmäisessä käytetään __init__ maagista menetelmää, jota voidaan käyttää alustamaan useampi kuin yksi esiintymämuuttuja yhdellä kertaa. Urheiluluokalla tarkoitetaan ottaen huomioon kaksi esiintymismuuttujaa, joka on nimi ja urheilu.
  • Molemmat esiintymismuuttujat voidaan määritellä kerralla käyttämällä __inti__-maagista menetelmää. Tapauksessa 2 sama asia toistetaan, mutta tällä kertaa käytämme set-menetelmää ilmentymän muuttujan alustamiseen. Tässä 2 muuttujaa varten meidän on kutsuttava tämä menetelmä kahdesti.

Täällä voimme nähdä taikuusmenetelmän taikuuden, kerralla voimme määritellä useamman kuin yhden muuttuvan esiintymän.

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())

lähtö:

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())

lähtö:

Joten pohjimmiltaan, taikuusmenetelmät ovat jotain, joka voi helpottaa olio-ohjelmointia.

Ymmärrämme nyt mitä nämä ovat?

  • Taikuusmenetelmät ovat kaikkea oliokeskeiselle Pythonille.
  • Python-taikuusmenetelmät voidaan määritellä erityismenetelminä, jotka voivat lisätä taikuutta luokkaan.
  • Nämä taikasanat alkavat ja päättyvät kaksoisviivoilla, esimerkiksi _init_ tai _add_.

Python-taikuusmenetelmät

Pythonilla on monia sisäänrakennettuja taikuusmenetelmiä joidenkin nimeämiseksi:

  • __sen sisällä__
  • __Uusi__
  • __del__
  • __abs__
  • __lisätä__
  • __sub__
  • __mul__

Keskustelemme joistakin taikuusmenetelmistä ymmärtääksesi sitä paremmin.

Otetaan nyt __add__-maaginen menetelmä:

A=5
A+3

Lähtö: 8

Sama voidaan suorittaa __add__-taikamenetelmällä.

A.__add__(5)

Lähtö: 10

Tässä operaattorin plus -sovelluksella lisätään numeerinen arvo numeeriseen muuttujaan A. Sama voidaan suorittaa käyttämällä sisäänrakennettua __add__-maagista menetelmää. Kuten olemme keskustelleet, taikuusmenetelmiä ei kuitenkaan tarkoiteta kutsua suoraan, vaan sisäisesti, joidenkin muiden menetelmien tai toimien kautta.

komponentit

Tarkemmin sanottuna voimme erottaa taikuusmenetelmät eri luokkiin komponenttien kuvaamisen sijasta.

1. Kohteen rakentaja ja alustaja

  • Taikuusmenetelmiä käytetään laajasti python-ohjelmoinnin perusteissa luokan rakentamisessa ja alustuksessa.
  • Kuten olemme keskustelleet __init__ maagisesta menetelmästä. Tätä menetelmää käytetään luokan objektin alustamisen määrittelemiseen.
  • __init__ ei ole ensimmäinen menetelmä, johon objektien luomiseen vedotaan, mutta ensimmäinen maaginen menetelmä __new__ käynnistetään, joka luo uuden ilmentymän ja kutsuu sitten __init__ maagista menetelmää.

Katsotaanpa esimerkkiä samasta:

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)

lähtö:

soittamalla maaginen menetelmä__new__

soittamalla maaginen menetelmä__init__

Esimerkin 2 alustaminen

__uusi__: tä voidaan käyttää monella eri tavalla, mutta tämä näyttää yksinkertaisen esimerkin tästä taikuusmenetelmästä.

2. Vertailutagiamenetelmät

Pythonilla on useita taikuusmenetelmiä, jotka on suunniteltu tekemään intuitiivisia vertailuja esineiden välillä operaattoreiden käytön avulla.

Jotkut on lueteltu alla:

  • __lt __ (itse, muu): käytetään kutsumaan vertailuun käyttämällä <operaattoria.
  • __le __ (itse, muu): käytetään kutsumaan vertailuun käyttämällä <= operaattoria.
  • __eq __ (itse, muu): käytetään kutsumaan vertailuun == operaattorilla.
  • __ne __ (itse, muu): käytetään kutsumaan vertailuun käyttämällä! = operaattoria.
  • __s __ (itse, muu): käytetään kutsumaan vertailuun käyttämällä operaattoria> =.

3. Infix-operaattorit

Pythonilla on taikamenetelminä tyypillisiä sisäänrakennettuja binäärioperaattoreita.

Jotkut on lueteltu alla:

  • __add__ (itse, muu): lisäykseen
  • __sub__ (itse, muu): vähentämiseen
  • __mul __ (itse, muu): kertomiseksi

Python Magic -menetelmän edut

Python tarjoaa “taikuusmenetelmiä”, koska ne todella suorittavat taikuutta ohjelmallesi.

Suurimmat edut ovat:

Pythonin taikuusmenetelmät tarjoavat yksinkertaisen tavan saada esineet käyttäytymään sisäänrakennettujen tyyppien tavoin, mikä tarkoittaa, että voidaan välttää vasta-intuitiivisia tai epästandardeja tapoja suorittaa perusoperaattoreita. Esimerkiksi

meillä on kaksi sanakirjaa 'dicta' ja 'dicta'

dicta = (1 : "XYZ")
dictb = (2 : "LMN")
dict1 + dict2

lähtö:

Jäljitys (viimeisin puhelu viimeksi):

Tiedosto “python”, rivi 1, tuumaa

TypeError: ei-tuetut operandityypit +: lle: 'dict' ja 'dict'

Nyt tämä johtaa tyyppivirheeseen, koska sanakirjatyyppi ei tue lisäystä. Nyt voimme laajentaa sanakirjaluokkaa ja lisätä ”__add__” -taikamenetelmän:

class AddDict(dict):
def __add__(self, dicts):
self.update(dicts)
return AddDict(self)
dicta = AddDict((1 : "XYZ"))
dictb = AddDict((2 : "LMN"))
print (dicta + dictb)

Nyt saamme halutun tuloksen.
(1: 'XYZ', 2: 'LMN')

Siksi yhtäkkiä taikuus tapahtui vain lisäämällä taikuusmenetelmä. Virhe katosi, mitä olimme saapuneet aiemmin.

johtopäätös

Taikuusmenetelmät ovat erityisiä menetelmiä, joihin kutsutaan epäsuorasti ja jotka identifioidaan viivoilla tai kaksoisviivoilla, kuten __add__. Nyt, jotta voidaan käyttää paremmin Python-luokkia, on tiedettävä ainakin jokin taikuusmenetelmä, kuten __init__, __new__. Vertailun operaattorin taikuusmenetelmät antavat pythonille reunan, jossa esineiden esiintymää voidaan verrata tasa-arvon ja epätasa-arvon suhteen. Lyhyesti sanottuna taikuusmenetelmä tekee taikuutta python-ohjelmointiin vähentämällä monimutkaisuutta.

Suositellut artikkelit

Tämä on Python Magic -menetelmän opas. Tässä keskustellaan Python Magic -menetelmän johdannosta, sen komponenteista ja eduista sekä joitain esimerkkejä. Voit myös käydä läpi muiden ehdotettujen artikkeleidemme saadaksesi lisätietoja -

  1. Palindromi PHP: ssä
  2. Python-avainsanat
  3. Python IDE Windowsille
  4. Vaikka Loop Pythonissa
  5. C ++ avainsanat