Pitão

Sobrecarga de operador em Python

Sobrecarga de operador em Python
A sobrecarga corresponde à tendência de um método ou operador de atuar de múltiplas formas no sentido de programação, a partir dos parâmetros fornecidos à técnica ou dos operandos sobre os quais o operador opera. Sobrecarga do operador significa que significado prolongado é dado acima de seu significado funcional predefinido.  Operadores Python funcionam para classes integradas, mas para vários tipos, o mesmo operador age de maneira diferente. Veremos como podemos sobrecarregar o operador em Python neste guia.

Por exemplo, o operador + pode adicionar dois números matematicamente, combinar duas listas ou concatenar strings. Aqui está um programa python simples para mostrar um vislumbre do operador + usado para adição e concatenação.

Bem, o que acontece se usarmos esses operadores para objetos em um usuário definido aula? Tomemos o seguinte programa que tenta simular um ponto no esquema 2-D de dimensões. Abaixo, você já pode ver que, como o Python não entendeu como juntar 2 instâncias de coordenadas, um Erro de tipo é gerado.

Podemos realizar essa tarefa em Python por meio da sobrecarga de operador, mas antes de tudo, vamos entender os métodos especiais.

Métodos mágicos especiais

Métodos de classe começando com o sublinhado duplo são classificados em Python como métodos especiais ou funções mágicas. As funções que são usadas para realizar atividades específicas. Os métodos usuais que descrevemos para uma classe não são tais funções. Um deles seria o __iniciar_() função que mencionamos acima. Sempre que construímos um novo objeto nessa classe, ele é chamado. Vamos renderizar nossa classe compatível com funções integradas por meio de funções mágicas. Em Python, existem várias outras funções especiais.

Operadores binários ou matemáticos

Aqui estão os detalhes das funções mágicas para sobrecarregar os operadores binários ou matemáticos do python.

Operadores relacionais ou de comparação

Abaixo estão os detalhes das funções mágicas para sobrecarregar a comparação python ou operadores relacionais.

Operadores de atribuição

Aqui estão os detalhes de algumas funções mágicas para sobrecarregar os operadores de atribuição no código Python.

Agora, é hora de ver alguns códigos de amostra quando usamos os métodos mágicos mencionados acima e sobrecarregamos certos operadores.

Sobrecarregar os operadores binários ou matemáticos

Exemplo 01: Operador de adição
Você terá que fazer cumprir o __adicionar_() método na classe para sobrecarregar o + operador. Grande dever chega com grande força. Dentro deste método, você pode fazer o que quiser. Mas é muito mais racional retornar o 'Coord ' objeto da soma das coordenadas.

Quando você tentou c1 + c2, o Python realmente chama sua magia .Método __add __ () como c1.__add __ (c2) ou Coord.__adicionar __ (c1, c2).

Exemplo 02: Operador de multiplicação
Da mesma forma, você pode até sobrecarregar vários operadores binários usando funções mágicas. No mesmo exemplo acima, enquanto sobrecarregamos o operador de multiplicação, obtemos 2, 6 como nossa resposta à função mágica.

Exemplo 03: Operador de subtração
Usando o operador de subtração, temos -1, -1 como nossa resposta.

Exemplo 04: Operador Elétrico
Nós sobrecarregamos o potência operador ao usar a função de magia de potência; obtemos 1, 8.

Exemplo 05: Operador de Módulo
Sobrecarregando o operador de módulo, usamos o __mod__ função mágica para obter o módulo.

Você também pode usar os outros operadores matemáticos, e.g., divisão e operador de divisão de piso, para sobrecarregar.

Sobrecarregar os operadores de comparação

Python não restringe a sobrecarga de operadores apenas a operadores binários ou aritméticos. Também podemos sobrecarregar os operadores de comparação.

Exemplo 01: Menor que Operador
Suponha que exigimos menos do que o '<' symbol na nossa 'Coord ' classe a ser implementada. Vamos comparar o valor desses argumentos da fonte e produzir a resposta. Como de costume, pode ser aplicado. Temos três objetos e os estamos comparando em declarações de impressão. Como resultado, obteremos esse objeto c1 é menos que c2, então produz Verdadeiro. Por outro lado, c2 e c1 estão mais excelente que c3; é por isso que a saída falsa.

Exemplo 02: Diferente do Operador
Agora sobrecarregando o Não igual (!=) operador de comparação, você obterá Verdadeiro no caso da primeira e da segunda declaração de impressão porque satisfaz a condição de que ambos os objetos não são iguais. Por outro lado, o objeto 1 produz o mesmo que o objeto 3, que não atende ao requisito de Diferente. É por isso que a terceira declaração de impressão gera Falso como resultado.

Exemplo 03: Maior que ou igual ao operador
Vamos tentar o mesmo exemplo para sobrecarregar o maior ou igual para o operador. No caso da primeira declaração de impressão, temos 2> = 13, qual é Não é verdade; é por isso que resulta em falso. Na segunda e terceira declarações de impressão, obtivemos 13> = 2 e 2> = 2, respectivamente. Ambos são Verdadeiro pois satisfazem a condição de maior ou igual a.

Experimente os outros operadores de comparação, e.g., mais significativo que, igual a, 'menor ou igual a' em seu código também.

Sobrecarregar os operadores de atribuição

Dê uma olhada em um exemplo de sobrecarga de operador de atribuição. Estamos tomando um exemplo semelhante com a sobrecarga do '- =' operador de atribuição. Nós definimos dois objetos com valores de coordenadas y e z. Primeiro objeto c1 está passando seus valores para 'auto.y ' e 'auto.z ' variáveis, respectivamente. Por outro lado, o objeto c2 está passando seus valores para 'outro.y ' e 'outro.z '.

Objeto c1 tem valores de auto.y = 1 e auto.z = 1 agora mesmo. O objeto c2 valores 'outro.y = -2 ' e 'outro.z = -3 ' foi passado para subtraído do objeto c1 valores. Como resultado, c1 - c2 resulta auto.y - outro.y = 1 - (- 2) e auto.z - outro.z = 1 - (- 3). O resultado calculado, que é 3 e 4, foi salvo em 'self.x 'e' self.z 'devido ao operador de atribuição de' =.'Na impressão, este código irá gerar o resultado do objeto c1, que tem duas variáveis auto.y = 3 e auto.z = 4.

Conclusão

Tentamos cobrir todos os operadores em seu código para uma melhor compreensão da sobrecarga do operador.

Tutorial OpenTTD
OpenTTD é um dos jogos de simulação de negócios mais populares que existem. Neste jogo, você precisa criar um maravilhoso negócio de transporte. No en...
SuperTuxKart para Linux
SuperTuxKart é um ótimo título projetado para trazer a você a experiência Mario Kart gratuitamente em seu sistema Linux. É bastante desafiador e diver...
Tutorial de Battle for Wesnoth
The Battle for Wesnoth é um dos jogos de estratégia de código aberto mais populares que você pode jogar no momento. Este jogo não está apenas em desen...