Uvod u magijsku metodu Pythona

Metode Python Magic nisu neke čarobnjačke stvari. Upravo ih priroda tih metoda čini čarobnim. Metoda nije ništa drugo nego u osnovi funkcija u Python klasi. Ugrađene metode koje se ne mogu izravno nazvati su "čarobne metode". Magične metode se ne mogu izravno pozivati, odnosno pozivaju se neizravno kao učinak drugog poziva. Lako je identificirati magične metode jer su dvostruko podvučene jedna ispred i druga straga. Primjerice, _add_.Ovih dvostrukih podvlaka imaju određeno ime koje čine sredstva. Dakle, _add_ se naziva "dunder add dunder".

Što je magična metoda Pythona?

  • Python je interpretirani, objektno orijentirani program koji vam omogućuje pisanje proceduralnog koda i / ili objektno orijentiranog. Kao što znamo da stvaranje objekata pojednostavljuje upravljanje kompliciranim strukturama podataka. Uz to, magične metode olakšavaju sposobnost kreiranja objektno orijentiranog programiranja.
  • Prije nego što se udubite u magičnu metodu, shvatimo zašto su stvoreni u prvom redu?
  • Ispod je jedan primjer klase jedan koristeći magičnu metodu, a drugi je bez čarobne metode. U prvom se koristi __init__ magijska metoda koja se može koristiti za inicijaliziranje više varijabli instance u jednom potezu. Sportska klasa definirana je kao uzimajući u obzir dvije varijable instance koje su ime i sport.
  • Obje varijable primjerka mogu se definirati u jednom potezu pomoću magične metode __inti__. U slučaju 2 ista se stvar ponavlja, ali ovaj put koristimo postavljenu metodu za inicijalizaciju varijable instance. Ovdje za 2 varijable, ovu metodu moramo pozvati dva puta.

Ovdje možemo vidjeti način magije, u jednom potezu možemo definirati više varijabli.

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

Izlaz:

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

Izlaz:

U osnovi, magične metode su nešto što može olakšati objektno orijentirano programiranje.

A sada da razumemo što su ovo?

  • Magične metode su sve za objektno orijentirani Python.
  • Magijske metode Python-a mogu se definirati kao posebne metode koje mogu dodati „magiju“ u klasu.
  • Ove čarobne riječi započinju i završavaju dvostrukim podvlakama, na primjer, _init_ ili _add_.

Magijske metode Pythona

Python ima mnogo ugrađenih čarobnih metoda za imenovanje, a to su:

  • __u tome__
  • __novi__
  • __del__
  • __abs__
  • __dodati__
  • __pod__
  • __mul__

Raspravljat ćemo o nekim čarobnim metodama kako bismo ga bolje razumjeli.

Sada uzmimo čarobnu metodu __add__:

A=5
A+3

Izlaz: 8

Isto se može izvesti i magijskom metodom __add__.

A.__add__(5)

Izlaz: 10

Ovdje se operator plus koristi za dodavanje numeričke vrijednosti numeričkoj varijabli A. Isto se može izvesti pomoću ugrađene magične metode __add__. Međutim, kao što smo raspravljali, čarobne metode se ne bi trebalo nazvati izravno, već interno, nekim drugim metodama ili radnjama.

komponente

Da budemo specifični, možemo magične metode razdvojiti u različite kategorije, umjesto da opisujemo komponente.

1. Konstruktor i inicijalizator objekta

  • Magične metode široko se koriste u osnovama programiranja pitona u konstrukciji klase i inicijalizaciji.
  • Kao što smo razgovarali o __init__ magijskoj metodi. Ova metoda se koristi za definiranje inicijalizacije objekta u klasi.
  • __init__ nije prva metoda koja se poziva na stvaranje predmeta, priziva se prva magična metoda __new__ koja stvara novu instancu, a zatim poziva __init__ magijsku metodu.

Pogledajmo primjer istog:

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)

Izlaz:

zove čarobnu metodu__new__

zove čarobnu metodu__init__

Inicijalizacija instancije 2 3

__new__ se može koristiti na različite načine, ali to pokazuje jednostavan primjer ove čarobne metode.

2. Usporedba Magične metode

Python ima brojne magične metode koje su dizajnirane da omoguće intuitivne usporedbe objekata pomoću operatora.

Neke su navedene u nastavku:

  • __lt __ (samo, ostalo): koristi se za uspoređivanje pomoću operatora.
  • __le __ (samo, drugo): koristi se za uspoređivanje pomoću <= operator.
  • __eq __ (samo, ostalo): koristi se za uspoređivanje pomoću operatora ==.
  • __ne __ (samo, ostalo): koristi se za uspoređivanje pomoću operatora! =.
  • __ge __ (samo, ostalo): koristi se za uspoređivanje pomoću> = operator.

3. Infix operateri

Python kao tipične metode ima ugrađene binarne operatore.

Neke su navedene u nastavku:

  • __add__ (samo, ostalo): za dopunu
  • __sub__ (samo, ostalo): za oduzimanje
  • __mul __ (samo, ostalo): za množenje

Prednosti magične metode Python

Python nudi "čarobne metode", jer one zaista izvode čaroliju za vaš program.

Najveće prednosti su:

Pythonove magične metode pružaju jednostavan način da se predmeti ponašaju poput ugrađenih tipova, što znači da se mogu izbjeći protu-intuitivni ili nestandardni načini izvođenja osnovnih operatora. Na primjer,

imamo dva rječnika 'dikta' i 'dikta'

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

Izlaz:

Traceback (najnoviji zadnji poziv):

Datoteka "python", redak 1, u

TypeError: nepodržani tipovi operanda za +: 'dict' i 'dict'

Ovo se završava pogreškom tipa jer vrsta rječnika ne podržava dodavanje. Sada možemo proširiti klasu rječnika i dodati magičnu metodu „__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)

Sada dobivamo željeni izlaz.
(1: 'XYZ', 2: 'LMN')

Tako se iznenada magija dogodila samo dodavanjem čarobne metode. Pogreška je nestala, što smo uzimali ranije.

Zaključak

Magične metode su posebne metode koje se neizravno pozivaju i poistovjećuju sa zvučnicima ili dvostrukim podvlakama poput __add__. Da biste bolje koristili Python-ove klase, morate znati barem neku magičnu metodu poput __init__, __new__. Usporedne magične metode operatora daju pythonu prednost gdje se primjerci objekata mogu uporediti za jednakost i nejednakost. Ukratko, magijska metoda čini magiju za programiranje pitona smanjujući složenost.

Preporučeni članci

Ovo je vodič o Python Magic Metodi. Ovdje smo raspravljali o uvodu u Python Magic Metodu, njezinim komponentama i prednostima, kao i nekim primjerima. Možete i proći kroz naše druge predložene članke da biste saznali više -

  1. Palindrome u PHP-u
  2. Python Ključne riječi
  3. Python IDE za Windows
  4. Dok je petlja u Pythonu
  5. C ++ Ključne riječi

Kategorija: