Úvod do metody Python Magic

V Python Magic metody nejsou nějaké kouzelnické věci. Je to právě povaha těchto metod, díky nimž jsou magické. Metoda není nic jiného než funkce ve třídě Python. Vestavěné metody, které nelze přímo nazvat, jsou „magické metody“. Kouzelné metody nelze vyvolat přímo, to znamená, že jsou vyvolány nepřímo jako důsledek jiného hovoru. Je snadné identifikovat magické metody, protože mají dvojitý podtržítko jeden vpředu a druhý vzadu. Například _add_.These dvojitá podtržítka mají specifický název, který je donorem. Takže _add_ se nazývá 'dunder add dunder'.

Co je to Python Magic Method?

  • Python je interpretované, objektově orientované programování, které vám dává možnost psát procedurální kód nebo objektově orientované. Jak víme, vytváření objektů zjednodušuje manipulaci se složitými datovými strukturami. Magické metody navíc usnadňují vytváření objektově orientovaného programování.
  • Před ponorem do jaké magické metody pochopíme, proč jsou na prvním místě vytvořeny?
  • Níže je jeden příklad třídy jedna pomocí magické metody a druhý je bez magické metody. V první je použita metoda __init__ magic, kterou lze použít k inicializaci více proměnných instance najednou. Třída Sports je definována jako zohlednění dvou proměnných instance, kterými jsou jméno a sport.
  • Obě proměnné instance lze definovat najednou pomocí magické metody __inti__. V případě 2 se totéž opakuje, ale tentokrát použijeme metodu set k inicializaci proměnné instance. Zde pro 2 proměnné musíme tuto metodu zavolat dvakrát.

Zde vidíme kouzlo magické metody, najednou můžeme definovat více než jednu proměnnou instanci.

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

Výstup:

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

Výstup:

Takže magické metody jsou v podstatě něco, co může usnadnit objektově orientované programování.

Nyní pojďme pochopit, co to je?

  • Magické metody jsou vše pro objektově orientovaný Python.
  • Pythonovy magické metody lze definovat jako speciální metody, které mohou do třídy přidat „magii“.
  • Tato magická slova začínají a končejí dvojitými podtržítky, například _init_ nebo _add_.

Python Magic Methods

Python má mnoho vestavěných magických metod, abychom jmenovali některé z nich:

  • __init__
  • __Nový__
  • __del__
  • __břišní svaly__
  • __přidat__
  • __sub__
  • __mul__

Budeme diskutovat o některých magických metodách, abychom to lépe pochopili.

Nyní pojďme použít metodu __add__ magie:

A=5
A+3

Výstup: 8

Totéž lze provést metodou __add__ magic.

A.__add__(5)

Výstup: 10

Zde se operátor plus používá pro přidání číselné hodnoty do numerické proměnné A. Totéž lze provést pomocí vestavěné metody __add__ magic. Jak jsme však již diskutovali, neměly by být magické metody nazývány přímo, ale interně, prostřednictvím některých jiných metod nebo akcí.

Komponenty

Abychom byli konkrétní, můžeme místo popisu komponent rozdělit magické metody do různých kategorií.

1. Konstruktor a inicializátor objektů

  • Kouzelné metody jsou široce používány v programovacích základech pythonu ve výstavbě tříd a inicializaci.
  • Jak jsme diskutovali __init__ magickou metodu. Tato metoda se používá k definování inicializace objektu ve třídě.
  • __init__ není první metoda, která se má vyvolat při vytváření objektů, ale vyvolá se první metoda magie __new__, která vytvoří novou instanci a poté volá metodu __init__ magic.

Podívejme se na příklad stejného:

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)

Výstup:

volání magické metody__new__

volání magické metody__init__

Inicializace instance 2 3

__new__ lze použít mnoha různými způsoby, ale to ukazuje jednoduchý příklad této magické metody.

2. Porovnání magických metod

Python má řadu magických metod, které jsou navrženy tak, aby intuitivně porovnávaly objekty pomocí operátorů.

Některé z nich jsou uvedeny níže:

  • __lt __ (self, other): je používán k volání při porovnání pomocí <operátor.
  • __le __ (self, other): je používán k volání při porovnání pomocí <= operátor.
  • __eq __ (self, other): je zvyklý být volán při porovnání pomocí == operátor.
  • __ne __ (self, other): je zvyklý být volán při porovnání pomocí! = operátor.
  • __ge __ (self, other): je používán k volání při porovnání pomocí> = operátor.

3. Infix Operators

Python má typické vestavěné binární operátory jako magické metody.

Některé z nich jsou uvedeny níže:

  • __add__ (samostatně, jiné): pro přidání
  • __sub__ (samostatně, ostatní): pro odčítání
  • __mul __ (samostatně, jiné): pro násobení

Výhody metody Python Magic

Python poskytuje „magické metody“, protože skutečně vykonávají magii pro váš program.

Největší výhody jsou:

Pythonovy magické metody poskytují jednoduchý způsob, jak přimět objekty, aby se chovaly jako vestavěné typy, což znamená, že se lze vyhnout kontraintuitivním nebo nestandardním způsobům provádění základních operátorů. Například

máme dva slovníky 'dicta' a 'dicta'

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

Výstup:

Traceback (poslední poslední hovor):

Soubor „python“, řádek 1, v

TypeError: nepodporované typy operandů pro +: 'dict' a 'dict'

Nyní to končí chybou typu, protože typ slovníku nepodporuje přidání. Nyní můžeme rozšířit třídu slovníku a přidat magickou 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)

Nyní dostáváme požadovaný výstup.
(1: 'XYZ', 2: 'LMN')

Náhle se tedy magie stala pouhým přidáním magické metody. Chyba zmizela, kterou jsme začínali dříve.

Závěr

Kouzelné metody jsou speciální metody, které jsou vyvolávány nepřímo a jsou identifikovány pomocí dunderů nebo dvojitých podtržítek, jako je __add__. Abychom mohli lépe používat třídy Python, musíme znát alespoň nějakou magickou metodu, jako je __init__, __new__. Porovnání operátorových magických metod poskytuje python výhodu, kde je možné porovnávat instance objektů pro rovnost i nerovnost. Stručně řečeno, magická metoda dělá magii až python programování snížením složitosti.

Doporučené články

Toto je průvodce metodou Python Magic. Zde diskutujeme úvod do metody Python Magic, její komponenty a výhody, jakož i některé příklady. Další informace naleznete také v dalších navrhovaných článcích -

  1. Palindrom v PHP
  2. Python Klíčová slova
  3. Python IDE pro Windows
  4. Zatímco smyčka v Pythonu
  5. Klíčová slova C ++

Kategorie: