Introducción a la sobrecarga de Python

La sobrecarga es el proceso de tener el mismo nombre para más de una entidad (métodos, operadores, etc.) pero difieren según sus atributos. La diferencia en los atributos puede deberse a una diferencia en el recuento de los atributos o la diferencia en el tipo de atributos. En otras palabras, desde la perspectiva de la entidad (métodos, operadores, etc.), se puede redactar o explicar como la capacidad de una entidad para comportarse de manera diferente de acuerdo con los parámetros que se le proporcionan. En Python, como la mayoría de los otros lenguajes de programación de alto nivel, la sobrecarga de Python se puede lograr de dos maneras o casos, se enumeran a continuación,

  • Sobrecarga de funciones o métodos (sobrecarga de funciones).
  • Sobrecarga de operadores (sobrecarga del operador).

Sobrecarga de funciones en Python

La sobrecarga de métodos no es un concepto aplicado en Python, pero se puede lograr a través de varias técnicas. En primer lugar, el concepto de sobrecarga de métodos se puede clasificar en dos conceptos diferentes,

  • Sobrecarga de funciones definidas por el usuario.
  • Sobrecarga de funciones predeterminadas.

1. Sobrecarga de funciones definidas por el usuario

La sobrecarga de funciones definidas por el usuario se puede lograr en python estableciendo un parámetro o valor de argumento como ninguno. Entonces, si un argumento se establece como ninguno, la función reacciona de una manera cuando no se pasa un valor para este argumento y de una manera diferente cuando no se pasa un valor para el mismo argumento.

Ejemplo:

#!/usr/bin/env python
class Overloading_test:
def overloading_function(self, argument1 = 0, argument2 = 0 ):
if argument1 is not None or argument2 is not None:
print('Method Overloading parameter count :', (int( argument1) + int(argument2)))
else:
print( ' Method Overloading without parameters ' )
# Create instance
object1 = Overloading_test()
# Call the method with no arguments
object1.overloading_function()
# Call the method with 1 argument
object1.overloading_function(1)
# Call the method with 2 argument
object1.overloading_function(1, 1)

Salida:

2. Sobrecarga de funciones predeterminadas o predefinidas

La sobrecarga de funciones incorporadas implica la definición de la función predefinida que se espera que se sobrecargue en la clase python como una función especial. Entonces, cuando la función predefinida se declara como una función especial en la clase python, el intérprete usará esta función especial como la declaración para la llamada predefinida. El siguiente ejemplo explica este proceso con precisión.

Ejemplo:

Consideremos la función len () que se utiliza para determinar la longitud de un elemento para este ejemplo, el siguiente ejemplo muestra el uso estándar de la función de longitud sin implicar una sobrecarga y publica el impacto correspondiente.

# Using len() function without method overloading
Lower_Case = ( ' a ', ' b ', ' c ', ' d ', ' e ', ' f ', ' g ', ' h ', ' i ', ' j ', ' k ', ' l ', ' m ', ' n ', ' o ', ' p ', ' q ', ' r ', ' s ', ' t ', ' u ', ' v ', ' w ', ' x ', ' y ', ' z ' ) Upper_Case = ( ' A ', ' B ', ' C ', ' D ', ' E ', ' F ', ' G ', ' H ', ' I ', ' J ', ' K ', ' L ', ' M ', ' N ', ' O ', ' P ', ' Q ', ' R ', ' S ', ' T ', ' U ', ' V ', ' W ', ' X ', ' Y ', ' Z ' ) print(' Collection used for List1 : ', type(Lower_Case))
print(' Collection used for list2 : ', type(Upper_Case))
print(' Total count of Alphabets in list1 : ', len(Lower_Case))
print(' Total count of Alphabets in list2 : ', len(Upper_Case))

Salida:

Ahora usemos la sobrecarga de métodos para la función len () en el mismo fragmento de código

class overloading:
def __init__(self, argument1, argument2):
self.argument1 = argument1
self.argument2 = argument2
def __len__(self):
return argument1+argument2
Lower_Case = ( ' a ', ' b ', ' c ', ' d ', ' e ', ' f ', ' g ', ' h ', ' i ', ' j ', ' k ', ' l ', ' m ', ' n ', ' o ', ' p ', ' q ', ' r ', ' s ', ' t ', ' u ', ' v ', ' w ', ' x ', ' y ', ' z ' ) Upper_Case = ( ' A ', ' B ', ' C ', ' D ', ' E ', ' F ', ' G ', ' H ', ' I ', ' J ', ' K ', ' L ', ' M ', ' N ', ' O ', ' P ', ' Q ', ' R ', ' S ', ' T ', ' U ', ' V ', ' W ', ' X ', ' Y ', ' Z ' ) print(' Collection used for List1 : ', type(Lower_Case))
print(' Collection used for list2 : ', type(Upper_Case))
argument1 = len(Lower_Case)
argument2 = len(Upper_Case)
# Using len() function without method overloading
Object1 = overloading(argument1, argument2)
print('Overall length of both the lists : ', len(Object1))

Salida:

Podemos notar claramente que, en lugar de utilizar la funcionalidad habitual de longitud incorporada, se utiliza la función especial sobrecargada __len __ () que hace que la salida imprima la longitud sumada de ambas listas en lugar de su longitud individual.

Sobrecarga del operador en Python

Esto implica una interpretación extendida de un operador más que su propósito original. El ejemplo más común es el operador de suma '+', donde se puede usar para la suma habitual y también para unir dos cadenas diferentes.

Ejemplo:

# add two numbers
print(1 + 2)
# concatenate two strings
print("Hello"+"World")

Salida:

Ventajas de la sobrecarga de Python

  • Aumenta la reutilización del código.
  • Aumenta la claridad del código.
  • La complejidad involucrada en el código se reduce enormemente.

Conclusión

La sobrecarga desempeña un papel vital en muchos lenguajes de programación de alto nivel. En el caso de python, aunque no están implicados directamente, tienen un papel importante para evitar el uso repetitivo del código.

Artículos recomendados

Esta es una guía para la sobrecarga de Python. Aquí discutimos las funciones definidas por el usuario y predefinidas junto con su operador y sus ventajas. También puede consultar los siguientes artículos para obtener más información.

  1. Variables de Python (4 tipos principales)
  2. Sobrecarga frente a anulación con ejemplos
  3. Operaciones de archivo de Python
  4. Editores de Python (6 mejores editores)
  5. Ejemplos de funciones integradas de Python