Pitón

Sobrecarga de operadores en Python

Sobrecarga de operadores en Python
La sobrecarga corresponde a la tendencia de un método o un operador a actuar de múltiples formas en el sentido de la programación, en función de los parámetros proporcionados a la técnica o los operandos sobre los que opera el operador. Sobrecarga del operador significa que se da un significado prolongado por encima de su significado funcional predefinido.  Los operadores de Python funcionan para clases integradas, pero para varios tipos, el mismo operador actúa de manera diferente. Veremos cómo podríamos hacer la sobrecarga de operadores en Python en esta guía.

Por ejemplo, el operador + puede sumar dos números matemáticamente, combinar dos listas o concatenar cadenas. Aquí hay un programa de Python simple para mostrar un vistazo del operador + utilizado para la suma y la concatenación.

Bueno, ¿qué sucede si usamos estos operadores para objetos en un usuario definido clase? Tomemos el siguiente programa que intenta simular un punto en el esquema de dimensiones 2-D. A continuación, ya puede ver que debido a que Python no entendía cómo unir instancias de 2 coordenadas, un Error de tecleado es generado.

Podemos realizar esta tarea en Python mediante la sobrecarga del operador, pero antes que nada, entendamos los métodos especiales.

Métodos mágicos especiales

Métodos de clase que comienzan con doble subrayado se clasifican en Python como métodos especiales o funciones mágicas. Las funciones que se utilizan para realizar actividades específicas. Los métodos habituales que describimos para una clase no son tales funciones. Uno de ellos sería el __en eso_() función que mencionamos anteriormente. Cada vez que construimos un nuevo objeto en esa clase, se llama. Haremos que nuestra clase sea compatible con las funciones integradas a través de funciones mágicas. En Python, hay varias otras funciones especiales.

Operadores binarios o matemáticos

Aquí están los detalles de las funciones mágicas para sobrecargar los operadores matemáticos o binarios de Python.

Operadores relacionales o de comparación

A continuación se muestran los detalles de las funciones mágicas para sobrecargar la comparación de Python o los operadores relacionales.

Operadores de Asignación

Aquí están los detalles de algunas funciones mágicas para sobrecargar los operadores de asignación en código Python.

Ahora es el momento de echar un vistazo a un par de códigos de muestra cuando usamos los métodos mágicos mencionados anteriormente y sobrecargamos ciertos operadores.

Sobrecargar los operadores binarios o matemáticos

Ejemplo 01: Operador de suma
Tendrá que hacer cumplir la __agregar_() método en la clase para sobrecargar el + operador. El gran deber llega con mucha fuerza. Dentro de este método, puedes hacer lo que quieras. Pero es mucho más racional devolver el 'Coord ' objeto de la suma de coordenadas.

Cuando probó c1 + c2, Python realmente llama a su magia .__add __ () método como c1.__add __ (c2) o Coord.__add __ (c1, c2).

Ejemplo 02: Operador de multiplicación
Del mismo modo, incluso puede sobrecargar varios operadores binarios utilizando funciones mágicas. En el mismo ejemplo anterior, mientras sobrecargamos el operador de multiplicación, obtenemos 2, 6 como nuestra respuesta a la función mágica.

Ejemplo 03: Operador de resta
Usando el operador de resta, obtuvimos -1, -1 como nuestra respuesta.

Ejemplo 04: Operador de energía
Sobrecargamos el energía operador mientras usa la función de magia de poder; tenemos 1, 8.

Ejemplo 05: Operador de módulo
Sobrecargando el operador de módulo, hemos utilizado el __modificación__ función mágica para obtener el módulo.

También puede utilizar los otros operadores matemáticos, e.gramo., operador de división y división de piso, para sobrecarga.

Sobrecargar los operadores de comparación

Python no restringe la sobrecarga de operadores a solo operadores binarios o aritméticos. También podemos sobrecargar los operadores de comparación.

Ejemplo 01: Operador menor que
Supongamos que requerimos menos que el '<' symbol en nuestro 'Coord ' clase para ser implementada. Comparemos el valor de estos argumentos de la fuente y obtengamos la respuesta. Como de costumbre, se puede aplicar. Tenemos tres objetos y los estamos comparando en declaraciones impresas. Como resultado, obtendremos ese objeto c1 es menos que c2, entonces sale Cierto. Por otro lado, c2 y c1 están mas excelente que c3; es por eso que tanto la salida falsa.

Ejemplo 02: No es igual al operador
Ahora sobrecargando el No es igual (!=) operador de comparación, obtendrá Cierto en el caso de la primera y segunda declaración de impresión porque satisface la condición de que ambos objetos no son iguales. Por otro lado, el objeto 1 produce lo mismo que el objeto 3, que no cumple con el requisito de No igual. Es por eso que la tercera declaración impresa genera Falso como resultado.

Ejemplo 03: Operador mayor o igual que
Probemos el mismo ejemplo para sobrecargar el mayor que o igual al operador. En el caso de la primera declaración impresa, tenemos 2> = 13, cual es no es verdad; por eso cede Falso. En las declaraciones impresas segunda y tercera, obtuvimos 13> = 2 y 2> = 2, respectivamente. Ambos son Cierto ya que satisfacen la condición de mayor o igual a.

Pruebe los otros operadores de comparación, e.gramo., más significativo que, igual a, 'menor o igual que' en su código también.

Sobrecargar los operadores de asignación

Eche un vistazo a un ejemplo de sobrecarga del operador de asignación. Estamos tomando un ejemplo similar con la sobrecarga de '- =' operador de asignación. Hemos definido dos objetos que tienen valores de coordenadas yyz. Primer objeto c1 está pasando sus valores a 'uno mismo.y ' y 'uno mismo.z ' variables, respectivamente. Por otro lado, el objeto c2 está pasando sus valores a 'otro.y ' y 'otro.z '.

Objeto c1 tiene valores de uno mismo.y = 1 y uno mismo.z = 1 ahora mismo. El objeto c2 valores 'otro.y = -2 ' y 'otro.z = -3 ' ha sido pasado a restado del objeto c1 valores. Como resultado, c1 - c2 resulta uno mismo.y - otro.y = 1 - (- 2) y uno mismo.z - otro.z = 1 - (- 3). El resultado calculado, que es 3 y 4, se ha guardado en 'self.x 'y' self.z 'debido al operador de asignación de' =.'Al imprimir, este código generará el resultado del objeto c1, que tiene dos variables uno mismo.y = 3 y uno mismo.z = 4.

Conclusión

Tratamos de cubrir a todos los operadores en su código para una mejor comprensión de la sobrecarga de operadores.

Cómo cambiar los botones izquierdo y derecho del mouse en una PC con Windows 10
Es una norma que todos los dispositivos de mouse de computadora estén diseñados ergonómicamente para usuarios diestros. Pero hay dispositivos de mouse...
Emule los clics del mouse colocando el mouse con Clickless Mouse en Windows 10
El uso excesivo de un mouse o teclado en una postura incorrecta puede provocar muchos problemas de salud, como tensión, síndrome del túnel carpiano y ...
Agregue gestos del mouse a Windows 10 con estas herramientas gratuitas
En los últimos años, las computadoras y los sistemas operativos han evolucionado enormemente. Hubo un momento en que los usuarios tenían que usar coma...