Um guia completo para sobrecarga de métodos em Python (com exemplos)
Publicados: 2022-04-23A sobrecarga é a capacidade de uma função, método ou operador funcionar de forma diferente quando você passa parâmetros diferentes para o mesmo. Sobrecarga de método ou sobrecarga de função em Python têm termos comumente usados. Algumas das principais vantagens da sobrecarga é que você pode usar um método de várias maneiras, o que ajuda a manter seu código mais limpo e remove a complexidade ao trabalhar com uma equipe.
O que é sobrecarga de método?
Na Programação Orientada a Objetos, a Sobrecarga de Métodos é utilizada em cenários onde, para um objeto específico, um determinado método pode ser chamado de mais de uma forma de acordo com o requisito do projeto.
Exemplos de sobrecarga de método em Python são discutidos em detalhes posteriormente neste artigo.
O que é substituição de método?
A substituição de método em Python é semelhante à sobrecarga de método, exceto que a substituição de método ocorre entre uma subclasse e uma superclasse. Ele tem os mesmos parâmetros de quando os métodos são chamados. No entanto, eles se comportam de maneira diferente devido a algumas das funcionalidades serem substituídas da superclasse.
Exemplo de substituição de método
classe X:
def método1(auto):
print('Sou o primeiro recurso da classe X')
def método2(auto):
print('Sou a segunda feature da classe X')
classe Y(X):
def método1(auto):
print('Sou o primeiro recurso modificado da classe X na classe Y')
def método3(auto):
print('Sou uma característica da classe Y')
obj = Y()
obj.método1()
Resultado:
Eu sou o primeiro recurso modificado da classe X na classe Y
method1 foi substituído pela classe Y.
Aprenda cursos de ciência de dados online no upGrad
Sobrecarga de métodos em Python
O problema com a sobrecarga de métodos no Python é que o Python não o suporta por padrão. No entanto, existem soluções alternativas para fazer o mesmo.
O problema
Consideremos o seguinte código:
def add(a, b):
s = a + b
impressão(ns)
def add(a, b, c):
s = a + b + c
impressão(ns)
# add(8, 9) mostra o erro
adicionar(8, 9, 2)
À primeira vista, o código parece bom, mas quando você tenta executá-lo com dois argumentos, Python mostrará um erro porque em Python, quando você tem mais de um método com o mesmo nome, mas um número diferente de argumentos, apenas o último método definido pode ser usado.
Existem duas maneiras diferentes de superar esse problema de sobrecarga de métodos em Python.
1: Usar os mesmos métodos difere de acordo com o tipo de dados dos argumentos
Podemos ver um argumento para saber o tipo de dado, junto com *args que permite passar um número variável de argumentos para um método em Python. Podemos então usar instruções if para controlar como o método se comporta de acordo com a entrada.
CÓDIGO:
def add(dt, *args):
se dt =='int':
s = 0
se dt =='str':
s = ”
para x em argumentos:
s = s + x
impressão(ns)
add('int', 11, 9)
add(“str”, “Olá,” “Como você está?”)
Resultado:
20
Olá como vai você?
Esta foi a primeira solução para implementar a sobrecarga de métodos em Python.
Explore nossos cursos populares de ciência de dados
Programa Executivo de Pós-Graduação em Ciência de Dados do IIITB | Programa de Certificação Profissional em Ciência de Dados para Tomada de Decisões de Negócios | Mestre em Ciência de Dados pela Universidade do Arizona |
Programa de Certificado Avançado em Ciência de Dados do IIITB | Programa de certificação profissional em ciência de dados e análise de negócios da Universidade de Maryland | Ver todos os cursos de ciência de dados |
2: Usando o Decorador de Despacho Múltiplo (maneira mais eficiente)
O Multiple Dispatch Decorator é menos uma solução alternativa e funciona exatamente como deveria. Você pode instalá-lo usando pip3.
pip3 instala vários despachos
CÓDIGO:
de despacho múltiplo despacho de importação
@dispatch(int,int) # para 2 argumentos inteiros
def add(n1,n2):
s = n1 + n2
impressão(ns)
@dispatch(int,int,int) # para 3 argumentos inteiros
def add(n1,n2,n3):
s = n1 + n2 + n3
impressão(ns)
@dispatch(float,float,float) # para argumentos float
def add(n1,n2,n3):
s = n1 + n2 + n3
impressão(s)
adicionar(5,2)
adicionar(6,1,4)
adicionar(3.4,1.2,5.6)
Resultado:
7
11
10.2
Ao executar, o dispatcher cria um novo objeto que armazena diferentes implementações do método e decide o método a ser selecionado dependendo do tipo e número de argumentos passados ao chamar o método. Dessa forma, o método de sobrecarga em Python é mais eficiente.
Leia nossos artigos populares de ciência de dados
Plano de carreira em ciência de dados: um guia abrangente de carreira | Crescimento da carreira em ciência de dados: o futuro do trabalho está aqui | Por que a ciência de dados é importante? 8 maneiras pelas quais a ciência de dados agrega valor aos negócios |
Relevância da ciência de dados para gerentes | A melhor folha de dicas de ciência de dados que todos os cientistas de dados deveriam ter | 6 principais razões pelas quais você deve se tornar um cientista de dados |
Um dia na vida do cientista de dados: o que eles fazem? | Mito quebrado: a ciência de dados não precisa de codificação | Business Intelligence vs Data Science: Quais são as diferenças? |
Conclusões
Se você deseja entrar no campo da Ciência de Dados, o Python é um bom primeiro passo a ser dado. Para se aprofundar e estudar ainda mais o assunto, você pode conferir cursos avançados de certificações online, como o Executive Program in Data Science do IIIT-Bangalore em associação com o upGrad . Este programa abrange os aspectos importantes do assunto e oferece muitos benefícios adicionais, como assistência no trabalho, mentoria 1:1, suporte on-line, palestras ao vivo e módulos adicionais opcionais para entusiastas que desejam aprimorar ainda mais as habilidades.
Qual é a diferença entre uma função e um método em Python?
Em Python, existem dois tipos de funções: funções internas e funções definidas pelo usuário. print() e len() são exemplos de funções internas. Funções definidas pelo usuário em python são funções que podemos nos definir para realizar uma tarefa específica mais de uma vez em um programa típico. Método é como uma função, exceto que os métodos pertencem a uma classe e podem ser chamados apenas em um objeto. (Sintaxe: obj.método())
Como escolho entre Python e R?
Python e R são as duas principais linguagens usadas para Data Science. Enquanto o que usar depende de vários fatores como a empresa que você está buscando, o tipo de projeto, requisitos do cliente, etc., geralmente, se você é um iniciante em programação, trabalhando em um ambiente de engenharia construindo aplicativos de larga escala, Python é uma ótima escolha. Por outro lado, se você tem experiência anterior em programação e deseja executar tarefas de análise de dados rapidamente e visualizar seus dados usando belos gráficos para tomar uma decisão melhor estatisticamente, R é o caminho a seguir.
Quanto tempo leva para dominar a ciência de dados?
Cada um tem seu próprio ritmo de aprendizado. Embora, para um iniciante sem experiência prévia em programação, levará cerca de 6 a 7 meses para fortalecer seus fundamentos. Poste isso, novamente depende de quanto você pratica e dos projetos em que trabalhar. Se você seguir uma certificação on-line, poderá dominá-la em cerca de um ano.