Como sobrecarregar um operador em python
Ocasionalmente, você quer ser capaz de fazer algo especial como resultado do uso de um operador padrão, como add (+). Às vezes Python não fornece um comportamento padrão para os operadores, porque não tem padrão de implementar. Não importa o que a razão pode ser, sobrecarga de operadores torna possível atribuir uma nova funcionalidade para operadores existentes para que eles fazem o que você quer, ao invés do que Python pretendido.
Conteúdo
Video: Curso de C++ - Aula 41 - Sobrecarga de operadores
Os passos que se seguem demonstram como sobrecarregar um operador e usá-lo como parte de uma aplicação.
Abra uma janela do Python Arquivo.
Você vê um editor no qual você pode digitar o código de exemplo.
Digite o seguinte código para a janela - pressione ENTER após cada linha:
MyClass classe: def __init __ (self, * args): self.Input = argsdef __add __ (self, Outros): Saída = MyClass () Output.Input = self.Input + Other.Inputreturn Outputdef __str __ (auto): Saída = "para o Item em self.Input: Saída + = ItemOutput + = " "regresso OutputValue1 = MyClass ("Vermelho", "Verde", "Azul") Valor2 = MyClass ("Amarelo", "Roxa", "Ciano") Valor3 = Value1 + Value2print ("{0} + {1} = {2}".format (Value1, Valor2, Valor3))
O exemplo demonstra algumas técnicas diferentes. O construtor, __nisso__(), demonstra um método para a criação de uma variável exemplo ligado ao auto objeto. Você pode usar essa abordagem para criar tantas variáveis conforme necessário para apoiar a instância.
Quando você cria suas próprias classes, não + operador é definido até que você defina um, na maioria dos casos. A única exceção é quando você herdar de uma classe existente que já tem o + definido pelo operador. Para adicionar duas MyClass entradas juntos, você deve definir o __adicionar__() método, o que equivale ao + operador.
O código usado para o __adicionar__() método pode parecer um pouco estranho, também, mas você precisa pensar sobre isso uma linha de cada vez. O código começa com a criação de um novo objeto, Saída, a partir de Minha classe. Nada é adicionado ao Saída neste momento - é um objeto em branco.
Os dois objetos que você deseja adicionar, self.Input e Other.Input, são realmente tuplas. O código coloca a soma destes dois objetos em Saída entrada. o __adicionar__() método então retorna o novo objecto combinados para o chamador.
Claro, você pode querer saber por que você não pode simplesmente adicionar as duas entradas juntos como se fosse um número. A resposta é que você pode acabar com uma tupla como uma saída, em vez de um Minha classe como uma saída. O tipo de saída teria de ser alterado, e que iria também mudar qualquer utilização do objecto resultante.
Imprimir Minha classe corretamente, você também precisa definir uma __str __ () método. Este método converte um Minha classe objeto em uma string. Neste caso, a saída é um string delimitada por espaço (Cada um dos itens na série é separada a partir dos outros artigos por um espaço) contendo cada um dos valores encontrados nas self.Input. Claro, a classe que você cria saída pode qualquer string que representa totalmente o objeto.
O procedimento principal cria dois objectos de teste, Value1 e value2. Acrescenta-los juntos e coloca o resultado em Value3. O resultado é impressa na tela.
Escolha Executar → Run Module.
Aqui está o resultado de adicionar os dois objetos juntos, convertendo-os em cordas, e, em seguida, imprimir o resultado. É um monte de código para tal instrução de saída simples, mas o resultado definitivamente demonstra que você pode criar classes que são auto-suficientes e totalmente funcional.