Cómo sobrecargar un operador en python

De vez en cuando, usted quiere ser capaz de hacer algo especial como el resultado del uso de un operador estándar como de suma (+). A veces Python no proporcionar un comportamiento por defecto para los operadores porque no tiene ningún defecto de implementar. No importa lo que podría ser la razón, la sobrecarga de operadores hace posible la asignación de nuevas funciones a los operadores existentes para que haga lo que quiera, en lugar de lo que pretende Python.

Los pasos siguientes muestran cómo sobrecargar un operador y lo utilizan como parte de una aplicación.

Abrir una ventana de Python Archivo.

Video: (P.O.O.) Reto 27 - Clase Amiga y Sobrecarga Operadores

Ves un editor en el que puede escribir el código de ejemplo.

  • Escriba el siguiente código en la ventana - presione ENTRAR después de cada línea:

    Video: Sobre carga de operadores/ Operador de salida

    MyClass clase: def __init __ (self, * args): self.Input = argsdef __add __ (self, Otros): salida = MyClass () Output.Input = self.Input + Other.Inputreturn Outputdef __str __ (self): salida = "para artículo en self.Input: Salida + = ItemOutput + = " "volver OutputValue1 = MyClass ("rojo", "Verde", "Azul") Value2 = MyClass ("Amarillo", "Púrpura", "cian") Valor3 = Valor1 + Value2print ("{0} + {1} = {2}".formato (valor1, valor2, Valor3))

    El ejemplo demuestra algunas técnicas diferentes. El constructor, __en eso__(), demuestra un método para crear una variable de instancia unido a la yo objeto. Puede utilizar este método para crear tantas variables como sea necesario para apoyar la instancia.

    Video: sobrecarga de operadores

    Al crear sus propias clases, sin + operador se define hasta que defina una, en la mayoría de los casos. La única excepción es cuando se hereda de una clase existente que ya tiene el + operador definido. Con el fin de añadir dos entradas MiClase juntos, se debe definir el __añadir__() método, lo que equivale a la + operador.

    El código utilizado para la __añadir__() método puede parecer un poco extraño, también, pero hay que pensar en ello una línea a la vez. El código se inicia mediante la creación de un nuevo objeto, Salida, de Mi clase. Nada se añade a Salida en este momento - es un objeto en blanco.

    Video: Sobrecarga

    Los dos objetos que desea añadir, self.Input y Other.Input, en realidad son tuplas. El código coloca la suma de estos dos objetos en Salida entrada. los __añadir__() método vuelve entonces el nuevo objeto combinado a la persona que llama.

    Por supuesto, es posible que desee saber por qué no puede simplemente añadir las dos entradas juntas como si fuera un número. La respuesta es que acabaría con una tupla como salida, en lugar de una Mi clase como una salida. El tipo de la salida sería cambiado, y que también cambiaría cualquier uso del objeto resultante.

    Imprimir Mi clase adecuadamente, también es necesario definir una __str __ () método. Este método convierte una Mi clase objeto en una cadena. En este caso, la salida es una cadena delimitada por espacios (Cada uno de los elementos de la cadena se separa de los otros artículos por un espacio) que contiene cada uno de los valores encontrados en self.Input. Por supuesto, la clase que se crea puede hacer salir cualquier cadena que representa plenamente el objeto.

    El principal procedimiento crea dos objetos de prueba, valor1 y valor2. Que las suma y coloca el resultado en valor3. El resultado se imprime en pantalla.

  • Seleccione Ejecutar → Módulo Run.

    Este es el resultado de sumar los dos objetos entre sí, los convierte en cadenas, y luego imprimir el resultado. Es una gran cantidad de código para una instrucción de salida tan simple, pero el resultado sin duda demuestra que es posible crear clases que son independientes y completamente funcional.

  • Artículos Relacionados