Uvod v magično metodo Python

Metode Python Magic niso nekaj čarovniških stvari. Prav narava teh metod jih naredi čarobne. Metoda ni nič drugega kot v osnovi funkcija v razredu Python. Vgrajene metode, ki jih ni mogoče neposredno poklicati, so "čarobne metode". Magičnih metod ni mogoče neposredno priklicati, to pomeni, da se jih prikliče posredno kot učinek drugega klica. Magične metode je enostavno prepoznati, saj imajo dvojno podčrtano eno spredaj, drugo pa zadaj. Na primer, _add_.Ta dvojna podčrtaja imajo točno določeno ime, ki je izvajalec. Torej _add_ se imenuje "dunder add dunder".

Kaj je magična metoda Python?

  • Python je interpretirano, objektno usmerjeno programiranje, ki vam omogoča pisanje proceduralne kode in / ali objektno naravnanost. Kot vemo, ustvarjanje objektov poenostavlja zapleteno obdelavo podatkovnih struktur. Poleg tega magične metode olajšajo možnost ustvarjanja objektno usmerjenega programiranja.
  • Preden se potopimo v to, kaj je čarobna metoda, razumemo, zakaj so sploh ustvarjeni?
  • Spodaj je en primer prvega razreda s čarovniško metodo, drugi pa brez čarovniške metode. V prvem je uporabljena magična metoda __init__, ki jo lahko uporabimo za inicializacijo več spremenljivk primerka naenkrat. Šport v razredu je opredeljen kot upoštevanje dveh spremenljivk primerkov, to sta ime in šport.
  • Obe spremenljivki primerka je mogoče naenkrat določiti z magično metodo __inti__. V primeru 2 se ista stvar ponovi, tokrat pa za inicializiranje spremenljivke primerka uporabljamo nastavljeno metodo. Tukaj za dve spremenljivki moramo to metodo poklicati dvakrat.

Tu lahko opazimo čarobno metodo magije, naenkrat lahko določimo več kot en spremenljiv primerek.

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

Izhod:

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

Izhod:

V bistvu so čarobne metode nekaj, kar lahko olajša objektno usmerjeno programiranje.

Zdaj pa razumemo, kaj so to?

  • Magične metode so vse za objektno usmerjeni Python.
  • Magične metode Python lahko definiramo kot posebne metode, ki lahko razredu dodajo "magic".
  • Te čarobne besede se začnejo in končajo z dvojnimi podčrtaji, na primer _init_ ali _add_.

Magične metode Pythona

Python ima veliko vgrajenih čarobnih metod, poimenovati jih bodo:

  • __v__
  • __new__
  • __del__
  • __abs__
  • __add__
  • __sub__
  • __mul__

Razpravljali bomo o nekaterih čarobnih metodah, da bi ga bolje razumeli.

Zdaj pa vzemimo čarobno metodo __add__:

A=5
A+3

Izhod: 8

Enako lahko izvedemo z magično metodo __add__.

A.__add__(5)

Izhod: 10

Tu se operator plus uporablja za dodajanje numerične vrednosti številčni spremenljivki A. Enako lahko izvedemo z vgrajeno magično metodo __add__. Kakor smo že razpravljali, pa magičnih metod ne bi smeli imenovati neposredno, temveč znotraj drugih metod ali dejanj.

Komponente

Če želimo biti specifični, lahko magične metode ločimo v različnih kategorijah, namesto da bi jih opisovali.

1. Konstruktor in iniciator objekta

  • Magične metode se široko uporabljajo v osnovah programiranja pitona pri gradnji razredov in inicializaciji.
  • Kot smo razpravljali o __init__ magični metodi. Ta metoda se uporablja za definiranje inicializacije predmeta v razredu.
  • __init__ ni prva metoda, ki jo je treba uporabiti za ustvarjanje predmeta, prikliče se prva magična metoda __new__, ki ustvari nov primerek in nato pokliče __init__ magično metodo.

Poglejmo primer istega:

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)

Izhod:

klicanje magične metode__new__

klicanje čarobne metode__init__

Inicializacija primerka 2 3

__new__ lahko uporabljamo na najrazličnejše načine, vendar to prikazuje preprost primer te magične metode.

2. Primerjava Magične metode

Python ima številne čarobne metode, ki so zasnovane tako, da omogočajo intuitivne primerjave predmetov z uporabo operaterjev.

Nekatere so navedene spodaj:

  • __lt __ (samo, drugo): se uporablja za klic pri primerjavi z uporabo <operator.
  • __le __ (samo, drugo): se uporablja za klicanje pri primerjavi z uporabo <= operator.
  • __eq __ (samo, drugo): se uporablja za klic pri primerjavi z uporabo == operator.
  • __ne __ (samo, drugo): se uporablja za klic pri primerjavi z uporabo! = operator.
  • __ge __ (samo, drugo): se uporablja za klic pri primerjavi z uporabo> operator.

3. Infix operaterji

Python ima tipične vgrajene binarne operaterje kot čarobne metode.

Nekatere so navedene spodaj:

  • __add__ (samo, drugo): za dodatek
  • __sub__ (samo, drugo): za odštevanje
  • __mul __ (samo, drugo): za množenje

Prednosti magnetne metode Python

Python ponuja "čarobne metode", ker resnično izvajajo čarovništvo za vaš program.

Največje prednosti so:

Magične metode Pythona omogočajo preprost način, kako se predmeti obnašati kot vgrajene vrste, kar pomeni, da se je mogoče izogniti protitintuitivnim ali nestandardnim načinom izvajanja osnovnih operaterjev. Za npr.

imamo dva slovarja 'dikta' in 'dikta'

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

Izhod:

Traceback (zadnji klic zadnji):

Datoteka "python", vrstica 1, v

TypeError: nepodprti tipi operand za +: 'dict' in 'dict'

Zdaj se to konča z napako tipa, ker vrsta slovarja ne podpira dodajanja. Zdaj lahko razširimo razred slovarja in dodamo čarovniško metodo "__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)

Zdaj dobimo želeni rezultat.
(1: 'XYZ', 2: 'LMN')

Tako se je nenadoma magija zgodila samo z dodajanjem čarobne metode. Napaka je izginila, kar smo dobili prej.

Zaključek

Magične metode so posebne metode, ki jih prikličemo posredno in jih identificiramo z zvočniki ali dvojnimi podčrtaji, kot je __add__. Zdaj, če želite bolje uporabljati Python-ove razrede, morate poznati vsaj nekaj čarobnih metod, kot so __init__, __new__. Primerjalne magične metode operaterja dajejo pythonu prednost, kjer primerke predmetov lahko primerjamo po enakosti in neenakosti. S skratka čarobno metodo naredite magijo, da programira python z zmanjšanjem zahtevnosti.

Priporočeni članki

To je vodič o Python Magic Method. Tukaj razpravljamo o uvodu v magično metodo Python, njegovih sestavnih delih in prednostih ter o nekaterih primerih. Obiščite lahko tudi druge naše predlagane članke, če želite izvedeti več -

  1. Palindrom v PHP
  2. Ključne besede Python-a
  3. Python IDE za Windows
  4. Medtem ko je zanka v Pythonu
  5. C ++ Ključne besede