Inleiding tot de Python Magic-methode

In Python Magic zijn methoden niet zoiets als tovenarij. Het is gewoon de aard van deze methoden die ze magisch maakt. Een methode is niets anders dan de functie in de Python-klasse. De ingebouwde methoden die niet direct kunnen worden aangeroepen, zijn 'magische methoden'. Magische methoden kunnen niet direct worden ingeroepen, dat wil zeggen dat ze indirect worden aangeroepen als een effect van een andere aanroep. Het is gemakkelijk om magische methoden te identificeren, omdat ze aan de voorkant dubbel zijn onderstreept en aan de achterkant. Voor bijvoorbeeld _add_. Deze dubbele onderstrepingstekens hebben een specifieke naam die funders is. Dus _add_ wordt genoemd als 'dunder add dunder'.

Wat is Python Magic Method?

  • Python is een geïnterpreteerde, objectgeoriënteerde programmering waarmee u procedurele code en / of objectgeoriënteerd kunt schrijven. Zoals we weten, maakt het maken van objecten de verwerking van gecompliceerde gegevensstructuren eenvoudiger. Bovendien vergemakkelijkt de magische methode de mogelijkheid om objectgeoriënteerd programmeren te creëren.
  • Laten we, voordat we ingaan op wat een magische methode is, begrijpen waarom ze in de eerste plaats zijn gemaakt?
  • Hieronder ziet u een voorbeeld van klasse één die een magische methode gebruikt en de andere zonder de magische methode. In de eerste wordt de magische methode __init__ gebruikt, die kan worden gebruikt om meer dan één instantievariabele in één keer te initialiseren. Een klasse Sport wordt gedefinieerd als rekening houdend met twee instantievariabelen, namelijk naam en sport.
  • Beide instantievariabelen kunnen in één keer worden gedefinieerd met behulp van de magische methode __inti__. In geval 2 wordt hetzelfde herhaald, maar deze keer gebruiken we een vaste methode om de instantievariabele te initialiseren. Hier voor 2 variabelen moeten we deze methode twee keer aanroepen.

Hier kunnen we de magie van de magische methode zien, in één keer kunnen we meer dan één variabele instanties definiëren.

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

Output:

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

Output:

Dus eigenlijk zijn magische methoden iets dat het objectgeoriënteerd programmeren kan vergemakkelijken.

Laten we nu eens begrijpen Wat zijn dit?

  • Magische methoden zijn alles voor objectgeoriënteerde Python.
  • Python magische methoden kunnen worden gedefinieerd als de speciale methoden die "magie" aan een klasse kunnen toevoegen.
  • Deze magische woorden beginnen en eindigen met dubbele onderstrepingstekens, bijvoorbeeld _init_ of _add_.

Python Magic-methoden

Python heeft veel ingebouwde magische methoden om er enkele te noemen:

  • __in het__
  • __nieuw__
  • __del__
  • __buikspieren__
  • __toevoegen__
  • __sub__
  • __mul__

We zullen enkele van de magische methoden bespreken om het beter te begrijpen.

Laten we nu de magische methode __add__ nemen:

A=5
A+3

Uitgang: 8

Hetzelfde kan worden uitgevoerd met de magische methode __add__.

A.__add__(5)

Uitgang: 10

Hier wordt de operator plus gebruikt voor het toevoegen van een numerieke waarde aan numerieke variabele A. Hetzelfde kan worden uitgevoerd met de ingebouwde magische methode __add__. Zoals we echter hebben besproken, worden magische methoden niet verondersteld direct te worden aangeroepen, maar intern, via enkele andere methoden of acties.

Components

Om specifiek te zijn, kunnen we magische methoden in verschillende categorieën scheiden in plaats van componenten te beschrijven.

1. Objectconstructor en initialisatie

  • Magische methoden worden op grote schaal gebruikt in de basisprincipes van python-programmeren bij de constructie van klassen en initialisatie.
  • Zoals we de __init__ magische methode hebben besproken. Deze methode wordt gebruikt om de initialisatie van een object in de klasse te definiëren.
  • __init__ is niet de eerste methode die wordt aangeroepen voor het maken van objecten, maar de eerste magische methode __nit__ wordt aangeroepen die een nieuwe instantie maakt en vervolgens de magische methode __init__ aanroept.

Laten we het voorbeeld van hetzelfde bekijken:

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)

Output:

magische methode aanroepen__new__

magische methode aanroepen__init__

Instantie initialiseren 2 3

__new__ kan op verschillende manieren worden gebruikt, maar dit toont een eenvoudig voorbeeld van deze magische methode.

2. Vergelijking Magische methoden

Python heeft een aantal magische methoden die zijn ontworpen om intuïtieve vergelijkingen tussen objecten te maken met behulp van operatoren.

Sommige worden hieronder vermeld:

  • __lt __ (self, other): wordt gebruikt om bij vergelijking te worden opgeroepen met de operator <.
  • __le __ (self, other): wordt gebruikt om te vergelijken bij het gebruik van de operator <=.
  • __eq __ (self, other): wordt gebruikt om te worden vergeleken met de operator ==.
  • __ne __ (self, other): wordt gebruikt om te vergelijken met de operator! =.
  • __ge __ (self, other): wordt gebruikt om bij vergelijking te worden opgeroepen met de operator> =.

3. Infix-operatoren

Python heeft typische ingebouwde binaire operatoren als magische methoden.

Sommige worden hieronder vermeld:

  • __add__ (self, other): voor toevoeging
  • __sub__ (self, other): voor aftrekken
  • __mul __ (self, other): voor vermenigvuldiging

Voordelen van Python Magic Method

Python biedt "magische methoden" omdat ze echt magie voor uw programma uitvoeren.

De grootste voordelen zijn:

De magische methoden van Python bieden een eenvoudige manier om objecten zich te laten gedragen als ingebouwde typen, wat betekent dat men contra-intuïtieve of niet-standaard manieren om basisoperators uit te voeren kan vermijden. Voor bijvoorbeeld

we hebben twee woordenboeken 'dicta' en 'dicta'

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

Output:

Hertraceren (meest recente oproep als laatste)

Bestand "python", regel 1, in

TypeError: niet-ondersteunde operandtype (n) voor +: 'dict' en 'dict'

Nu eindigt dit met een typefout omdat het woordenboektype geen toevoeging ondersteunt. Nu kunnen we de woordenboekklasse uitbreiden en de magische methode "__add__" toevoegen:

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

Nu krijgen we de gewenste output.
(1: 'XYZ', 2: 'LMN')

Dus gebeurde plotseling magie alleen door een magische methode toe te voegen. De fout verdween die we eerder kregen.

Conclusie

Magische methoden zijn speciale methoden die indirect worden aangeroepen en worden geïdentificeerd met dunders of dubbele onderstrepingstekens zoals __add__. Om de Python-klassen beter te kunnen gebruiken, moet je op zijn minst een of andere magische methode kennen, zoals __init__, __new__. Vergelijkingsoperator magische methoden geven python een voorsprong waar instanties van objecten kunnen worden vergeleken voor gelijkheid en ongelijkheid. In een notendop magie methode magie tot python programmeren door de complexiteit te verminderen.

Aanbevolen artikelen

Dit is een gids over de Python Magic-methode. Hier bespreken we de inleiding tot Python Magic Method, de componenten en voordelen ervan, evenals enkele voorbeelden. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie–

  1. Palindroom in PHP
  2. Python-zoekwoorden
  3. Python IDE voor Windows
  4. Terwijl Loop in Python
  5. C ++ Trefwoorden