Introdução à Sobrecarga de Python

Sobrecarregar é o processo de ter o mesmo nome para mais de uma entidade (métodos, operadores, etc.), mas eles diferem por seus atributos. A diferença nos atributos pode ser devido a uma diferença na contagem dos atributos ou à diferença no tipo de atributos. Em outras palavras, da perspectiva da entidade (métodos, operadores, etc.), ela pode ser redigida ou explicada como a capacidade de uma entidade se comportar de maneira diferente, de acordo com os parâmetros fornecidos a ela. No python, como na maioria das outras linguagens de programação de alto nível, a sobrecarga do python pode ser obtida de duas maneiras ou instâncias: elas estão listadas abaixo,

  • Sobrecarga de funções ou métodos (Sobrecarga de Função).
  • Sobrecarga de operadores (Sobrecarga de operador).

Função Sobrecarga em Python

Sobrecarga de método não é um conceito aplicado em python, mas pode ser alcançado através de várias técnicas. Primeiro de tudo, o conceito de sobrecarga de método pode ser classificado em dois conceitos diferentes,

  • Sobrecarregando funções definidas pelo usuário.
  • Sobrecarregando funções padrão.

1. Sobrecarregando funções definidas pelo usuário

A sobrecarga de função definida pelo usuário pode ser alcançada em python, definindo um valor de parâmetro ou argumento como nenhum. Portanto, se um argumento é definido como nenhum, a função reage de uma maneira quando um valor não é passado para esse argumento e de uma maneira diferente quando um valor não é passado para o mesmo argumento.

Exemplo:

#!/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)

Resultado:

2. Sobrecarregando funções padrão ou predefinidas

A sobrecarga de funções internas envolve a definição da função predefinida que deve ser sobrecarregada na classe python como uma função especial. Portanto, quando a função predefinida for declarada como uma função especial na classe python, o intérprete usará essa função especial como declaração para a chamada predefinida. O exemplo abaixo explica esse processo com precisão.

Exemplo:

vamos considerar a função len () que é usada para determinar o comprimento de um item para este exemplo, o exemplo abaixo mostra o uso padrão da função length sem implicar sobrecarga e lança o impacto correspondente.

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

Resultado:

Agora vamos usar a sobrecarga de método para a função len () no mesmo trecho 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))

Resultado:

Podemos notar claramente, em vez de usar a funcionalidade usual de comprimento interno, a função especial sobrecarregada __len __ () que é usada para fazer com que a saída imprima o comprimento somado de ambas as listas, em vez de seu comprimento individual.

Sobrecarga de operador em Python

Isso envolve uma interpretação estendida de um operador mais do que seu objetivo original. O exemplo mais comum é o operador de adição '+', onde pode ser usado para adição usual e também para unir duas cadeias diferentes.

Exemplo:

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

Resultado:

Vantagens da sobrecarga em Python

  • Aumenta a reutilização do código.
  • Aumenta a clareza do código.
  • A complexidade envolvida no código é bastante reduzida.

Conclusão

A sobrecarga desempenha um papel vital em muitas linguagens de programação de alto nível. No caso de python, embora não sejam implícitas diretamente, elas desempenham um papel significativo em evitar o uso repetitivo do código.

Artigos recomendados

Este é um guia para a sobrecarga do Python. Aqui discutimos as funções definidas pelo usuário e predefinidas, juntamente com seu operador e suas vantagens. Você também pode consultar os seguintes artigos para saber mais:

  1. Variáveis ​​Python (4 principais tipos)
  2. Sobrecarga vs Substituição com exemplos
  3. Operações de arquivo Python
  4. Editores Python (6 principais editores)
  5. Exemplos de funções internas do Python