Bevezetés a Python Magic módszerbe

A Pythonban a Magic módszerek nem varázslatos dolgok. Csak ezeknek a módszereknek a jellege teszi varázslatossá őket. A módszer nem más, mint alapvetően a Python osztály funkciója. A mágikus módszerek azok a beépített módszerek, amelyeket nem lehet közvetlenül megnevezni. A mágikus módszereket nem lehet közvetlenül meghívni, vagyis közvetetten hívják meg őket egy másik hívás hatására. A mágikus módszereket könnyű azonosítani, mivel ezeknek kettős aláhúzása van az egyik elöl, a másik hátulján. Például: _add_.These kettős aláhúzásnak van egy meghatározott neve, amely finanszírozók. Tehát a _add_-t „dunder add dunder” -nek hívják.

Mi a Python Magic módszer?

  • A Python egy értelmezett, objektum-orientált programozás, amely lehetőséget ad eljárási kód és / vagy objektum-orientált íráshoz. Mint tudjuk, hogy az Objektumok létrehozása megkönnyíti a bonyolult adatszerkezetek kezelését. Ezen túlmenően a mágikus módszerek megkönnyítik az objektum-orientált programozás létrehozásának képességét.
  • Mielőtt belemerülnénk a mágikus módszerbe, megértjük, miért készültek először?
  • Az alábbiakban található egy példa az első osztályra, varázslatos módszerrel, a másik pedig a varázslati módszer nélkül. Az elsőben __init__ mágikus módszert használunk, amely felhasználható egynél több példányváltozó inicializálására. A sport osztályt úgy definiálják, hogy két példányváltozót vesz figyelembe, azaz a név és a sport.
  • Mindkét példányváltozó egyszerre meghatározható a __inti__ mágikus módszerrel. A 2. esetben ugyanez megismétlődik, de ezúttal beállított módszert használunk a példányváltozó inicializálására. Itt 2 változó esetén kétszer kell ezt a módszert hívnunk.

Itt láthatjuk a varázslatos módszer varázsait, egyszerre több változó példányt is meghatározhatunk.

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

Kimenet:

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

Kimenet:

Tehát alapvetően a mágikus módszerek olyan dolgok, amelyek megkönnyítik az objektum-orientált programozást.

Most értsük meg, melyek ezek?

  • A mágikus módszerek mindent tartalmaznak az objektum-orientált Python számára.
  • A Python mágikus módszereket úgy lehet meghatározni, mint azokat a speciális módszereket, amelyek hozzáadhatják a varázslatot az osztályhoz.
  • Ezek a mágikus szavak kettős aláhúzással kezdődnek és végződnek, például: _init_ vagy _add_.

Python mágikus módszerek

A Python számos beépített mágikus módszerrel rendelkezik, amelyek közül néhányat megnevezhet:

  • __benne__
  • __új__
  • __del__
  • __abs__
  • __add__
  • __alatti__
  • __mul__

Beszélünk néhány varázslatos módszerről, hogy jobban megértsük.

Most vegyük az __add__ mágikus módszert:

A=5
A+3

Teljesítmény: 8

Ugyanezt lehet végrehajtani az __add__ mágikus módszerrel.

A.__add__(5)

Teljesítmény: 10

Itt az operátor pluszt használjuk egy numerikus érték hozzáadásához az A numerikus változóhoz. Ugyanez végrehajtható a beépített __add__ mágikus módszerrel. Amint azt már tárgyaltuk, a mágikus módszereket nem közvetlenül, hanem belsőleg, más módszerekkel vagy tevékenységekkel kell meghívni.

Alkatrészek

Konkrétan a mágikus módszereket szétválaszthatjuk különböző kategóriákba a komponensek leírása helyett.

1. Objektumszerkesztő és kezdeményező

  • A mágikus módszereket széles körben alkalmazzák a python programozásának alapjain az osztályépítésben és az inicializálásban.
  • Ahogy __init__ mágikus módszert tárgyaltunk. Ezt a módszert használják az objektum inicializálásának meghatározására az osztályban.
  • Az __init__ nem az első módszer, amellyel meghívják az objektumok létrehozását, azonban az első __new__ mágikus módszer kerül meghívásra, amely új példányt hoz létre, majd az __init__ mágikus módszert hívja.

Lássuk ugyanazt a példát:

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)

Kimenet:

varázslati módszer hívása

varázszási módszer hívása__init__

A 2. példány inicializálása 3

Az __új __ sokféle módon használható, de ez a mágikus módszer egyszerű példáját mutatja.

2. Összehasonlító mágikus módszerek

A Python számos varázslati módszerrel rendelkezik, amelyek célja az objektumok intuitív összehasonlítása az operátorok használatával.

Néhányat az alábbiakban soroljuk fel:

  • __lt __ (önálló, egyéb): arra használják, hogy összehasonlítsák az <operátorral.
  • __le __ (önálló, egyéb): arra használják, hogy összehasonlítsák az <= operátort.
  • __eq __ (önálló, egyéb): arra használják, hogy az összehasonlításhoz == operátort használjunk.
  • __ne __ (önálló, egyéb): arra használják, hogy összehasonlítsuk a! = operátor használatával.
  • __ge __ (önálló, egyéb): arra használják, hogy összehasonlítsák a> = operátort használva.

3. Infix operátorok

A Pythonnak tipikus beépített bináris operátora van, mint mágikus módszer.

Néhányat az alábbiakban soroljuk fel:

  • __add__ (önálló, egyéb): kiegészítésként
  • __sub__ (önálló, egyéb): kivonáshoz
  • __mul __ (önálló, egyéb): a szorzáshoz

A Python Magic módszer előnyei

A Python „varázslatos módszereket” biztosít, mert valóban varázslatokat végeznek a programod számára.

A legnagyobb előnyök a következők:

A Python mágikus módszerei egyszerű módszert kínálnak arra, hogy az objektumok a beépített típusokhoz hasonlóan viselkedjenek, vagyis elkerülhető az alapvető operátorok végrehajtásának ellentétes intuitív vagy nem szabványos módszerei. Például:

két szótárunk van: 'dicta' és 'dicta'

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

Kimenet:

Traceback (legutóbbi hívás utolsó):

„Python” fájl, 1. sor, in

TypeError: nem támogatott operandus típus (ok) a + számára: 'dict' és 'dict'

Most ez típushibaval jár, mert a szótár nem támogatja az összeadást. Most kibővíthetjük a szótár osztályt, és hozzáadhatjuk a „__add__” mágikus módszert:

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

Most megkapjuk a kívánt eredményt.
(1: 'XYZ', 2: 'LMN')

Így a mágia hirtelen csak egy mágikus módszer hozzáadásával történt. A hiba eltűnt, amelyet korábban kezdtünk el.

Következtetés

A mágikus módszerek olyan speciális módszerek, amelyeket közvetett módon indítanak el, és amelyeket dundákkal vagy kettős aláhúzással azonosítanak, például __add__. Most, hogy jobban használhassuk a Python osztályokat, legalább néhány mágikus módszert meg kell ismerni, például __init__, __new__. Az összehasonlító operátor mágikus módszerek a python előnyeit adják, ahol az objektumok példányai összehasonlíthatók mind egyenlőség, mind egyenlőtlenség szempontjából. Dióhéjban a mágikus módszer segítségével a mágia a python-programozáshoz csökken a bonyolultság.

Ajánlott cikkek

Ez egy útmutató a Python Magic módszerről. Itt tárgyaljuk a Python Magic módszer bevezetését, annak alkotóelemeit és előnyeit, valamint néhány példát. A további javasolt cikkeken keresztül további információkat is megtudhat -

  1. Palindrome a PHP-ben
  2. Python Kulcsszavak
  3. Python IDE for Windows
  4. Amíg a hurok a Pythonban van
  5. C ++ Kulcsszavak

Kategória: