Métodos mágicos de Python son los métodos que comienzan y terminan con guiones bajos dobles '__'. Están definidos por clases integradas en Python y se usan comúnmente para la sobrecarga de operadores.
También se les llama métodos de Dunder, Dunder aquí significa Doble debajo (guiones bajos).
Métodos mágicos de Python
Las clases integradas definen muchos métodos mágicos, tú() La función puede mostrarle métodos mágicos heredados por una clase.
Ejemplo:
Este código muestra los métodos mágicos heredados por En t clase.
Python3
# code> print>(>dir>(>int>))> |
>
>Producción
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '_...>
O puede probar cmd/terminal para obtener la lista de funciones mágicas en Python, abrir cmd o terminal, escribir python3 para ir a la consola de Python y escribir:
>>> decir(int)>
Producción:

Métodos mágicos de Python
A continuación se muestran las listas de métodos mágicos de Python y sus usos.
Inicialización y construcción
- __nuevo__ : Para ser llamado en la creación de instancias de un objeto.
- __caliente__ : Para ser llamado por el método __new__.
- __del__ : Es el destructor.
Métodos mágicos numéricos.
convertir cadena a jsonobject java
- __trompa__ (ser): Implementa el comportamiento de math.trunc()
- __fortificar techo__ (ser): Implementa el comportamiento de math.ceil()
- __piso__ (ser): Implementa el comportamiento de math.floor()
- __redondo__ (yo,n): Implementa el comportamiento para la ronda incorporada().
- __invertir__(yo): Implementa el comportamiento de inversión utilizando el operador ~.
- __abdominales__(yo): Implementa el comportamiento para los abs() incorporados.
- __neg__(yo): Implementa comportamiento para la negación.
- __pos__(yo): Implementa un comportamiento para unario positivo.
Operadores aritméticos
- __agregar__ (yo, otro): Implementa el comportamiento de math.trunc()
- __sub__(yo, otro): Implementa el comportamiento de math.ceil()
- __Tengo__ (yo, otro): Implementa el comportamiento de math.floor()
- __pisodiv__ (yo, otro): Implementa el comportamiento para la ronda incorporada().
- __div__(yo, otro): Implementa el comportamiento de inversión utilizando el operador ~.
- __truediv__(yo, otro): Implementa el comportamiento para los abs() incorporados.
- __mod__(yo, otro): Implementa comportamiento para la negación.
- __divmod__(yo, otro): Implementa un comportamiento para unario positivo.
- __poder__: Implementa el comportamiento de los exponentes utilizando el operador **.
- __lshift__(yo, otro): Implementa el desplazamiento bit a bit hacia la izquierda usando el operador <<.
- __rshift__(yo, otro): Implementa el desplazamiento bit a bit hacia la derecha usando el operador>>.
- __y__(yo, otro): Se implementa bit a bit y utiliza el operador &.
- __o__(yo, otro): Implementa bit a bit o usando el | operador.
- __xor__(yo, otro): Implementa xor bit a bit usando el operador ^.
Métodos de magia con cuerdas
- __cadena__ (ser): Define el comportamiento para cuando se llama a str() en una instancia de su clase.
- __repr_ _(yo): T Ser llamado por el método repr() integrado para devolver una representación legible por máquina de un tipo.
- __unicode__(yo): Este método para devolver una cadena Unicode de un tipo.
- __formato__(self, formatstr): devolver un nuevo estilo de cadena.
- __picadillo_ _(ser): Tiene que devolver un número entero y su resultado se utiliza para una comparación rápida de claves en diccionarios.
- __distinto de cero__(yo): Define el comportamiento cuando se llama a bool() en una instancia de su clase.
- __tú_ _(ser): Este método para devolver una lista de atributos de una clase.
- __tamaño de__( ser): Devuelve el tamaño del objeto.
Métodos mágicos de comparación.
- __eq__ (yo, otro): Define el comportamiento del operador de igualdad, ==.
- __ne__(yo, otro): Define el comportamiento del operador de desigualdad, !=.
- __lt__ (yo, otro): Define el comportamiento del operador menor que, <.
- __gt__ (yo, otro): Define el comportamiento del operador mayor que,>.
- __le__(yo, otro): Define el comportamiento del operador menor o igual a, <=.
- __ge__ (yo, otro): Define el comportamiento del operador mayor o igual que,>=.
Métodos Dunder o Magic en Python
Veamos algunos de los métodos mágicos de Python con ejemplos:
1. método __init__
El método __init__ para la inicialización se invoca sin ninguna llamada, cuando se crea una instancia de una clase, como los constructores en otros lenguajes de programación como C++, Java, C#, PHP, etc.
Estos métodos son la razón por la que podemos agregar dos cadenas con el operador '+' sin ningún tipo de encasillamiento explícito.
Python3
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># print object location> >print>(string1)> |
>
q1 q2 q3 q4
>Producción
>
2. método __repr__
__repr__ El método en Python define cómo se presenta un objeto como una cadena.
El siguiente fragmento de código imprime solo la dirección de memoria del objeto de cadena. Agreguemos un método __repr__ para representar nuestro objeto.
Python3
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># print object location> >print>(string1)> |
>
>Producción
Object: Hello>
Si intentamos agregarle una cadena:
Python3
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># concatenate String object and a string> >print>(string1>+>' world'>)> |
>
>
Producción:
TypeError : unsupported operand type(s) for +: 'String' and 'str'>
3. método __agregar__
método __agregar__ en Python define cómo se sumarán los objetos de una clase. También se le conoce como operador de suma sobrecargado.
Ahora agregue el método __add__ a la clase String:
Pitón
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > >def> __add__(>self>, other):> >return> self>.string>+> other> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># concatenate String object and a string> >print>(string1>+>' Geeks'>)> |
rudyard kipling si explicación
>
>Producción
Hello Geeks>
Hemos discutido algunos de los métodos mágicos de Python o métodos Dunder. Los métodos mágicos en Python se pueden utilizar para diferentes funcionalidades de su clase.
Espero que aprendas sobre los métodos mágicos de Python en este artículo y los utilices en tus proyectos.