Introducción al método mágico de Python

En Python Magic los métodos no son algunas cosas mágicas. Es solo la naturaleza de estos métodos lo que los hace mágicos. Un método no es más que básicamente la función en la clase Python. Los métodos integrados que no se pueden llamar directamente son "métodos mágicos". Los métodos mágicos no se pueden invocar directamente, es decir, se invocan indirectamente como efecto de otra llamada. Es fácil identificar métodos mágicos porque tienen doble subrayado uno delante y otro detrás. Por ejemplo, _add_. Estos guiones bajos dobles tienen un nombre específico que es financiador. Entonces _add_ se llama 'dunder add dunder'.

¿Qué es el método mágico de Python?

  • Python es una programación orientada a objetos interpretada que le brinda la capacidad de escribir código de procedimiento y / u orientada a objetos. Como sabemos, crear objetos simplifica el manejo de estructuras de datos complicadas. Además de eso, los métodos mágicos facilitan la capacidad de crear programación orientada a objetos.
  • Antes de sumergirse en lo que es un método mágico, comprendamos por qué, en primer lugar, se crean.
  • A continuación se muestra un ejemplo de la clase uno con un método mágico y el otro sin el método mágico. En el primero se usa el método mágico __init__, que se puede usar para inicializar más de una variable de instancia de una vez. Una clase Deportes se define como tener en cuenta dos variables de instancia que son nombre y deporte.
  • Ambas variables de instancia se pueden definir de una vez usando el método mágico __inti__. En el caso 2, se repite lo mismo, pero esta vez estamos utilizando un método establecido para inicializar la variable de instancia. Aquí para 2 variables, tenemos que llamar a este método dos veces.

Aquí podemos ver la magia del método mágico, de una vez podemos definir más de una instancia variable.

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

Salida:

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

Salida:

Básicamente, los métodos mágicos son algo que puede facilitar la programación orientada a objetos.

Ahora entendamos ¿Qué son estos?

  • Los métodos mágicos son todo para Python orientado a objetos.
  • Los métodos mágicos de Python se pueden definir como los métodos especiales que pueden agregar "magia" a una clase.
  • Estas palabras mágicas comienzan y terminan con guiones bajos dobles, por ejemplo, _init_ o _add_.

Métodos mágicos de Python

Python tiene muchos métodos mágicos incorporados para nombrar algunos:

  • __en eso__
  • __nuevo__
  • __del__
  • __abdominales__
  • __añadir__
  • __sub__
  • __mul__

Discutiremos algunos de los métodos mágicos para entenderlo mejor.

Ahora tomemos el método mágico __add__:

A=5
A+3

Salida: 8

Lo mismo se puede realizar con el método mágico __add__.

A.__add__(5)

Salida: 10

Aquí, el operador plus se usa para agregar un valor numérico a la variable numérica A. Lo mismo se puede realizar utilizando el método mágico incorporado __add__. Sin embargo, como hemos discutido, no se supone que los métodos mágicos se llamen directamente, sino internamente, a través de otros métodos o acciones.

Componentes

Para ser específicos, podemos segregar métodos mágicos en diferentes categorías en lugar de describir componentes.

1. Constructor de objetos e iniciador

  • Los métodos mágicos se usan ampliamente en los conceptos básicos de programación de Python en la construcción de clases y la inicialización.
  • Como hemos discutido __init__ método mágico. Este método se ha utilizado para definir la inicialización de un objeto en la clase.
  • __init__ no es el primer método que se invoca para la creación de objetos, sin embargo, se invoca el primer método mágico __new__ que crea una nueva instancia y luego llama al método mágico __init__.

Veamos el ejemplo de lo mismo:

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)

Salida:

llamando al método mágico__nuevo__

llamando al método mágico__init__

Inicializando Instancia 2 3

__nuevo__ puede usarse en una amplia variedad de formas, pero esto muestra un ejemplo simple de este método mágico.

2. Métodos mágicos de comparación

Python tiene varios métodos mágicos diseñados para hacer comparaciones intuitivas entre objetos con el uso de operadores.

Algunos se enumeran a continuación:

  • __lt __ (self, other): se usa para llamar en comparación usando <operator.
  • __le __ (self, other): se usa para llamar en comparación usando el operador <=.
  • __eq __ (self, other): se usa para llamar en comparación usando el operador ==.
  • __ne __ (self, other): se usa para llamar en comparación usando! = operator.
  • __ge __ (self, other): se usa para llamar en comparación usando> = operador.

3. Operadores de infijo

Python tiene operadores binarios incorporados típicos como métodos mágicos.

Algunos se enumeran a continuación:

  • __add__ (self, other): para agregar
  • __sub__ (self, other): para sustracción
  • __mul __ (self, otro): para multiplicación

Ventajas del método mágico de Python

Python proporciona "métodos mágicos" porque realmente realizan magia para su programa.

Las mayores ventajas son:

Los métodos mágicos de Python proporcionan una forma simple de hacer que los objetos se comporten como los tipos incorporados, lo que significa que se pueden evitar formas no intuitivas o no estándar de realizar operadores básicos. Por ejemplo,

tenemos dos diccionarios 'dicta' y 'dicta'

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

Salida:

Rastreo (llamadas recientes más última):

Archivo "python", línea 1, en

TypeError: tipos de operandos no admitidos para +: 'dict' y 'dict'

Ahora, esto termina con un error de tipo porque el tipo de diccionario no admite la adición. Ahora, podemos extender la clase del diccionario y agregar el 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)

Ahora, estamos obteniendo la salida deseada.
(1: 'XYZ', 2: 'LMN')

Por lo tanto, de repente la magia ocurrió simplemente agregando un método mágico. El error desapareció que estábamos recibiendo antes.

Conclusión

Los métodos mágicos son métodos especiales que se invocan de manera indirecta y se identifican con elementos de relleno o guiones bajos dobles como __add__. Ahora, para usar mejor las clases de Python, uno debe conocer al menos algún método mágico como __init__, __new__. Los métodos mágicos de operador de comparación le dan a Python una ventaja donde las instancias de objetos se pueden comparar tanto para la igualdad como para la desigualdad. En pocas palabras, el método mágico hace magia a la programación en python reduciendo la complejidad.

Artículos recomendados

Esta es una guía sobre Python Magic Method. Aquí discutimos la introducción al Método mágico de Python, sus componentes y ventajas, así como algunos ejemplos. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. Palindrome en PHP
  2. Palabras clave de Python
  3. Python IDE para Windows
  4. Mientras Loop en Python
  5. Palabras clave de C ++