Wprowadzenie do Python Magic Method

W Python Magic metody nie są magicznymi rzeczami. Właśnie natura tych metod czyni je magicznymi. Metoda to po prostu funkcja w klasie Python. Wbudowane metody, których nie można bezpośrednio wywołać, to „metody magiczne”. Metod magicznych nie można wywoływać bezpośrednio, tzn. Wywołuje się je pośrednio w wyniku innego wywołania. Łatwo jest zidentyfikować magiczne metody, ponieważ podwójnie podkreślono jedną z przodu, a drugą z tyłu. Na przykład _add_. Te podwójne podkreślenia mają konkretną nazwę, która jest fundatorami. Więc _add_ jest nazywany „dunder add dunder”.

Czym jest Python Magic Method?

  • Python jest interpretowanym programowaniem obiektowym, które daje możliwość pisania kodu proceduralnego i / lub obiektowego. Jak wiemy, tworzenie obiektów upraszcza obsługę skomplikowanych struktur danych. Oprócz tego magiczne metody ułatwiają tworzenie programowania obiektowego.
  • Przed zanurzeniem się w to, co jest magiczną metodą, zrozummy, dlaczego w pierwszej kolejności są tworzone?
  • Poniżej znajduje się jeden przykład klasy pierwszej używającej magicznej metody, a drugi nie ma magicznej metody. W pierwszym z __init__ używana jest magiczna metoda, której można użyć do zainicjowania więcej niż jednej zmiennej instancji za jednym razem. Klasa Sport jest definiowana jako uwzględniająca dwie zmienne instancji, tj. Nazwę i sport.
  • Obie zmienne instancji można zdefiniować za jednym razem przy użyciu magicznej metody __inti__. W przypadku 2 to samo się powtarza, ale tym razem używamy metody set do zainicjowania zmiennej instancji. Tutaj dla 2 zmiennych musimy wywołać tę metodę dwa razy.

Tutaj widzimy metodę magii magii, za jednym razem możemy zdefiniować więcej niż jedną instancję zmiennej.

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

Wynik:

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

Wynik:

Zasadniczo magiczne metody są czymś, co może ułatwić programowanie obiektowe.

Teraz zrozumiemy Co to jest?

  • Magiczne metody są wszystkim dla obiektowego języka Python.
  • Metody magiczne w języku Python można zdefiniować jako metody specjalne, które mogą dodawać „magię” do klasy.
  • Te magiczne słowa zaczynają się i kończą podwójnymi podkreśleniami, na przykład _init_ lub _add_.

Python Magic Methods

Python ma wiele wbudowanych magicznych metod, aby wymienić niektóre z nich:

  • __w tym__
  • __Nowy__
  • __del__
  • __abs__
  • __Dodaj__
  • __pod__
  • __mul__

Omówimy niektóre magiczne metody, aby lepiej to zrozumieć.

Teraz weźmy magiczną metodę __add__:

A=5
A+3

Wyjście: 8

To samo można wykonać za pomocą magicznej metody __add__.

A.__add__(5)

Wyjście: 10

Tutaj operator plus służy do dodawania wartości liczbowej do zmiennej numerycznej A. To samo można wykonać za pomocą wbudowanej magicznej metody __add__. Jednak, jak omówiliśmy, magiczne metody nie powinny być wywoływane bezpośrednio, ale wewnętrznie, za pomocą innych metod lub działań.

składniki

Aby być konkretnym, możemy opisać metody magiczne w różnych kategoriach zamiast opisywać elementy.

1. Konstruktor i inicjator obiektów

  • Metody magiczne są szeroko stosowane w podstawach programowania w języku Python w budowaniu klas i inicjowaniu.
  • Jak już omówiliśmy magiczną metodę __init__. Ta metoda służy do definiowania inicjalizacji obiektu w klasie.
  • __init__ nie jest pierwszą metodą wywoływaną do tworzenia obiektów, jednak wywoływana jest pierwsza magiczna metoda __new__, która tworzy nową instancję, a następnie wywołuje metodę magiczną __init__.

Zobaczmy przykład tego samego:

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)

Wynik:

wywoływanie magicznej metody

wywoływanie metody magicznej__init__

Inicjowanie wystąpienia 2 3

Z __new__ można korzystać na wiele różnych sposobów, ale pokazuje to prosty przykład tej magicznej metody.

2. Porównanie Magiczne metody

Python ma wiele magicznych metod zaprojektowanych w celu intuicyjnego porównywania obiektów za pomocą operatorów.

Niektóre są wymienione poniżej:

  • __lt __ (self, other): służy do wywoływania przy użyciu operatora <.
  • __le __ (self, other): służy do wywoływania przy użyciu operatora <=.
  • __eq __ (self, other): służy do wywoływania przy użyciu operatora ==.
  • __ne __ (self, other): służy do wywoływania przy użyciu operatora! =.
  • __ge __ (self, other): służy do wywoływania przy użyciu operatora> =.

3. Operatory Infix

Python ma typowe wbudowane operatory binarne jako magiczne metody.

Niektóre są wymienione poniżej:

  • __add__ (self, other): do dodania
  • __sub__ (self, other): do odejmowania
  • __mul __ (ja, inny): do mnożenia

Zalety metody Python Magic

Python zapewnia „magiczne metody”, ponieważ naprawdę wykonują magię dla twojego programu.

Największymi zaletami są:

Magiczne metody Pythona zapewniają prosty sposób, aby obiekty zachowywały się jak typy wbudowane, co oznacza, że ​​można uniknąć sprzecznych z intuicją lub niestandardowych sposobów wykonywania podstawowych operatorów. Na przykład

mamy dwa słowniki „dicta” i „dicta”

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

Wynik:

Traceback (ostatnie połączenie ostatnio):

Plik „python”, wiersz 1, w

TypeError: nieobsługiwane typy operandów dla +: „dict” i „dict”

To kończy się błędem typu, ponieważ typ słownika nie obsługuje dodawania. Teraz możemy rozszerzyć klasę słownika i dodać magiczną metodę „__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)

Teraz otrzymujemy pożądaną wydajność.
(1: „XYZ”, 2: „LMN”)

Tak więc nagle magia wydarzyła się po prostu poprzez dodanie magicznej metody. Błąd zniknął, który otrzymywaliśmy wcześniej.

Wniosek

Metody magiczne to specjalne metody wywoływane pośrednio i identyfikowane za pomocą dunderów lub podwójnych znaków podkreślenia, takich jak __add__. Teraz, aby lepiej wykorzystać klasy Python, trzeba znać przynajmniej magiczną metodę, taką jak __init__, __new__. Magiczne metody operatora porównania dają Pythonowi przewagę, w której instancje obiektów mogą być porównywane zarówno pod względem równości, jak i nierówności. W skrócie magiczną metodą rób magię do programowania w języku Python, zmniejszając złożoność.

Polecane artykuły

To jest przewodnik po Python Magic Method. Tutaj omawiamy wprowadzenie do Python Magic Method, jej składników i zalet, a także kilka przykładów. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Palindrom w PHP
  2. Słowa kluczowe w języku Python
  3. Python IDE dla Windows
  4. Podczas gdy pętla w Pythonie
  5. C ++ Słowa kluczowe