Въведение в магическия метод на Python
В методите на Python Magic не са някои вълшебни неща. Просто естеството на тези методи ги прави вълшебни. Методът не е нищо друго, освен основно функцията в клас Python. Вградените методи, които не могат да бъдат извикани директно, са „магически методи“. Магическите методи не могат да бъдат извиквани директно, тоест те се извикват индиректно като ефект от друго повикване. Лесно е да се идентифицират магически методи, тъй като те са двойно подчертани един отпред, а друг отзад. Например, _add_. Тези двойни подчертания имат конкретно име, което е финансиране. Така _add_ се нарича като "dunder add dunder".
Какво е магически метод на Python?
- Python е интерпретирано, обектно-ориентирано програмиране, което ви дава възможност да пишете процедурен код и / или обектно-ориентирано. Както знаем, че създаването на обекти опростява сложната работа с структури от данни. В допълнение към това магическите методи облекчават възможността за създаване на обектно-ориентирано програмиране.
- Преди да се потопите в това, което е магически метод, нека разберем защо на първо място те са създадени?
- По-долу е даден пример за първи клас, използващ магически метод, а другият е без магическия метод. В първия се използва магически метод __init__, който може да се използва за инициализиране на повече от една променлива на инстанция в един ход. Класът Спорт се определя като вземане на две променливи на инстанция, което е име и спорт.
- И двете променливи инстанции могат да бъдат определени еднократно с помощта на магическия метод __inti__. В случай 2 се повтаря същото, но този път използваме определен метод за инициализиране на променливата на инстанцията. Тук за 2 променливи трябва да извикаме този метод два пъти.
Тук можем да видим метода на магията, с един замах можем да определим повече от един променлив екземпляр.
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())
изход:
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())
изход:
Така че по принцип магическите методи са нещо, което може да облекчи обектно-ориентираното програмиране.
Сега да разберем какви са тези?
- Магическите методи са всичко за обектно-ориентирания Python.
- Магическите методи на Python могат да бъдат определени като специалните методи, които могат да добавят „магия“ към даден клас.
- Тези вълшебни думи започват и завършват с двойни подчертания, например _init_ или _add_.
Магически методи на Python
Python има много вградени магически методи, за да назовем някои от тях са:
- __в него__
- __new__
- __del__
- __коремни мускули__
- __add__
- __sub__
- __mul__
Ще обсъдим някои от магическите методи, за да го разберем по-добре.
Сега нека да използваме магическия метод __add__:
A=5
A+3
Изход: 8
Същото може да се извърши и с магическия метод __add__.
A.__add__(5)
Изход: 10
Тук операторът плюс се използва за добавяне на числова стойност към числова променлива А. Същото може да се извърши с помощта на вградения магически метод __add__. Както вече обсъждахме, магическите методи не трябва да се наричат директно, а вътрешно, чрез някои други методи или действия.
елементи
За да бъдем конкретни, можем да разделим магическите методи в различни категории, вместо да описваме компоненти.
1. Конструктор и инициализатор на обект
- Магическите методи се използват широко в основите на програмирането на питони при изграждането на класове и инициализацията.
- Както сме обсъдили __init__ магически метод. Този метод се използва за определяне на инициализацията на обект в класа.
- __init__ не е първият метод, който се използва за създаване на обект, обаче се извиква първият магически метод __new__, който създава нов екземпляр и след това извиква __init__ магически метод.
Нека да видим примера със същото:
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)
изход:
призоваване на магически метод__new__
призоваване на магически метод__init__
Инициализиране на инстанция 2 3
__new__ може да се използва по най-различни начини, но това показва прост пример за този магически метод.
2. Магически методи за сравнение
Python има редица магически методи, които са предназначени да правят интуитивни сравнения между обекти с използването на оператори.
Някои са изброени по-долу:
- __lt __ (самостоятелно, друго): използва се за извикване при сравнение с помощта на <оператор.
- __le __ (самостоятелно, друго): използва се за извикване при сравнение с помощта на <= оператор.
- __eq __ (самостоятелно, друго): използва се за извикване при сравнение с използване на оператор ==.
- __ne __ (самостоятелно, друго): използва се за извикване при сравнение чрез! = оператор.
- __ge __ (самостоятелно, друго): използва се за извикване при сравнение с помощта на> = оператор.
3. Infix оператори
Python има типични вградени двоични оператори като магически методи.
Някои са изброени по-долу:
- __add__ (самостоятелно, друго): за добавяне
- __sub__ (самостоятелно, друго): за изваждане
- __mul __ (самостоятелно, друго): за умножение
Предимства на магическия метод на Python
Python предоставя „магически методи“, защото те наистина изпълняват магия за вашата програма.
Най-големите предимства са:
Магическите методи на Python осигуряват прост начин да накарат обектите да се държат като вградени типове, което означава, че човек може да избегне контраинтуитивни или нестандартни начини за изпълнение на основни оператори. За напр.
имаме два речника „дикта“ и „дикта“
dicta = (1 : "XYZ")
dictb = (2 : "LMN")
dict1 + dict2
изход:
Traceback (последно последно обаждане):
Файл „python“, ред 1, в
TypeError: неподдържани типове операнди за +: 'dict' и 'dict'
Сега това завършва с тип грешка, тъй като типът на речника не поддържа добавяне. Сега можем да разширим класа на речника и да добавим магически метод „__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)
Сега получаваме желания резултат.
(1: 'XYZ', 2: 'LMN')
Така изведнъж магията се случи само чрез добавяне на магически метод. Грешката изчезна, която получавахме по-рано.
заключение
Магическите методи са специални методи, които се извикват индиректно и се идентифицират с нюанси или двойни подчертания като __add__. Сега, за да използвате по-добре класовете Python, трябва да знаете поне някакъв магически метод като __init__, __new__. Сравнителните магически методи на оператора дават предимство на python, където случаи на обекти могат да се сравняват за равенство, както и за неравенство. С две думи магически метод направете магия за програмиране на питон, като намалите сложността.
Препоръчителни статии
Това е ръководство за магическия метод на Python. Тук обсъждаме въвеждането на Python Magic Method, неговите компоненти и предимства, както и някои примери. Можете също да прегледате и другите ни предложени статии, за да научите повече -
- Палиндром в PHP
- Ключови думи на Python
- Python IDE за Windows
- Докато Loop в Python
- C ++ Ключови думи