Introdução ao método mágico Python

No Python, os métodos mágicos não são um material mágico. É apenas a natureza desses métodos que os torna mágicos. Um método nada mais é do que basicamente a função na classe Python. Os métodos internos que não podem ser chamados diretamente são "métodos mágicos". Os métodos mágicos não podem ser invocados diretamente, ou seja, são invocados indiretamente como efeito de outra chamada. É fácil identificar métodos mágicos porque eles têm um duplo sublinhado, um na frente e outro atrás. Por exemplo, _adicionar_.Estes sublinhados duplos têm um nome específico que é financiador. Então _add_ é chamado como 'dunder add dunder'.

O que é o Python Magic Method?

  • Python é uma programação orientada a objetos, interpretada, que permite escrever código processual e / ou orientado a objetos. Como sabemos, a criação de objetos simplifica o manuseio de estruturas de dados complicadas. Além disso, os métodos mágicos diminuem a capacidade de criar programação orientada a objetos.
  • Antes de mergulhar no que é um método mágico, vamos entender por que, em primeiro lugar, eles foram criados?
  • Abaixo está um exemplo da classe um usando um método mágico e o outro sem o método mágico. No primeiro, é usado o método mágico __init__, que pode ser usado para inicializar mais de uma variável de instância de uma só vez. Uma classe Sports é definida como levando em consideração duas variáveis ​​de instância, que são nome e esporte.
  • Ambas as variáveis ​​de instância podem ser definidas de uma só vez usando o método mágico __inti__. No caso 2, a mesma coisa é repetida, mas desta vez estamos usando um método set para inicializar a variável de instância. Aqui para 2 variáveis, temos que chamar esse método duas vezes.

Aqui podemos ver a magia do método mágico, de uma só vez, podemos definir mais de uma instância variável.

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

Resultado:

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

Resultado:

Então, basicamente, métodos mágicos são algo que pode facilitar a programação orientada a objetos.

Agora vamos entender o que são esses?

  • Métodos mágicos são tudo para Python orientado a objetos.
  • Os métodos mágicos do Python podem ser definidos como os métodos especiais que podem adicionar "magia" a uma classe.
  • Essas palavras mágicas começam e terminam com sublinhados duplos, por exemplo, _init_ ou _add_.

Métodos mágicos Python

O Python possui muitos métodos mágicos embutidos para citar alguns deles:

  • __iniciar__
  • __Novo__
  • __del__
  • __abdômen__
  • __adicionar__
  • __sub__
  • __mul__

Discutiremos alguns dos métodos mágicos para entender melhor.

Agora vamos usar o método mágico __add__:

A=5
A+3

Saída: 8

O mesmo pode ser realizado com o método mágico __add__.

A.__add__(5)

Saída: 10

Aqui, o operador plus é usado para adicionar um valor numérico à variável numérica A. O mesmo pode ser realizado usando o método mágico __add__ interno. No entanto, como discutimos, os métodos mágicos não devem ser chamados diretamente, mas internamente, por meio de outros métodos ou ações.

Componentes

Para ser específico, podemos separar métodos mágicos em diferentes categorias, em vez de descrever componentes.

1. Construtor de Objetos e Inicializador

  • Os Métodos Mágicos são amplamente utilizados nos conceitos básicos de programação python na construção de classes e Inicialização.
  • Como discutimos o método mágico __init__. Este método é usado para definir a inicialização de um objeto na classe.
  • __init__ não é o primeiro método a ser chamado para a criação de objetos, no entanto, o primeiro método mágico __new__ é chamado, o que cria uma nova instância e chama o método mágico __init__.

Vamos ver o exemplo do mesmo:

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)

Resultado:

chamando método mágico

chamando método mágico__init__

Inicializando a instância 2 3

__new__ pode ser usado de várias maneiras, mas isso mostra um exemplo simples desse método mágico.

2. Métodos mágicos de comparação

O Python possui vários métodos mágicos projetados para fazer comparações intuitivas entre objetos com o uso de operadores.

Alguns estão listados abaixo:

  • __lt __ (próprio, outro): é usado para ser chamado na comparação usando <operador.
  • __le __ (próprio, outro): é usado para ser chamado na comparação usando <= operador.
  • __eq __ (próprio, outro): é usado para ser chamado na comparação usando o operador ==.
  • __ne __ (self, other): é usado para ser chamado na comparação usando o operador! =.
  • __ge __ (próprio, outro): é usado para ser chamado em comparação usando o operador> =.

3. Operadores Infix

O Python possui operadores binários embutidos típicos como métodos mágicos.

Alguns estão listados abaixo:

  • __add__ (próprio, outro): para adição
  • __sub__ (próprio, outro): para subtração
  • __mul __ (próprio, outro): para multiplicação

Vantagens do método mágico Python

O Python fornece "métodos mágicos" porque eles realmente executam mágica no seu programa.

As maiores vantagens são:

Os métodos mágicos do Python fornecem uma maneira simples de fazer com que os objetos se comportem como tipos internos, o que significa que é possível evitar maneiras contra-intuitivas ou fora do padrão de executar operadores básicos. Por exemplo,

temos dois dicionários 'dicta' e 'dicta'

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

Resultado:

Traceback (última chamada mais recente):

O arquivo “python”, linha 1, em

TypeError: tipo (s) de operando não suportado para +: 'dict' e 'dict'

Agora, isso acaba com um erro de tipo porque o tipo de dicionário não suporta adição. Agora, podemos estender a classe do dicionário e adicionar o método mágico "__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)

Agora, estamos obtendo a saída desejada.
(1: 'XYZ', 2: 'LMN')

Assim, de repente a mágica aconteceu apenas adicionando um método mágico. O erro desapareceu que estávamos recebendo mais cedo.

Conclusão

Métodos mágicos são métodos especiais que são chamados indiretamente e são identificados com dunders ou sublinhados duplos, como __add__. Agora, para usar melhor as classes Python, é preciso conhecer pelo menos algum método mágico como __init__, __new__. Os métodos mágicos do operador de comparação fornecem ao python uma vantagem em que instâncias de objetos podem ser comparadas tanto para igualdade quanto para desigualdade. Em poucas palavras, o método mágico faz mágica à programação python, reduzindo a complexidade.

Artigos recomendados

Este é um guia sobre o Python Magic Method. Aqui discutimos a introdução ao Python Magic Method, seus componentes e vantagens, além de alguns exemplos. Você também pode consultar nossos outros artigos sugeridos para saber mais:

  1. Palíndromo em PHP
  2. Palavras-chave Python
  3. IDE do Python para Windows
  4. While Loop em Python
  5. Palavras-chave C ++