Inhaltsverzeichnis
22.2.2 ¿Por qué no tener sobrecarga de operadores? Si la sobrecarga de operadores es una buena idea, ¿por qué no todos los lenguajes de programación apoyarlo? Curiosamente, Java, un lenguaje de programación muy utilizado, no soporte de sobrecarga del operador! ¡Una respuesta es porque se puede abusar de ella! Por ejemplo, ¿cuál es el significado de la siguiente código: No está claro qué significa ‘+’ en este contexto; de qué manera se suma Denise a Juan; ¿Significa que se van a casar? Si es así, ¿cuál es el resultado que se tiene en p3? El problema aquí es que desde una perspectiva de diseño (que en este caso puede ser puramente intuitivo, pero en otros casos puede estar relacionado con la intención de una aplicación) el El operador más no tiene sentido para el tipo Persona. Sin embargo, no hay nada en el lenguaje Python para indicar esto y, por lo tanto, cualquiera puede codificar cualquier operador en ¡cualquier clase! Como principio general de diseño; los desarrolladores deben seguir la semántica de tipos y, por lo tanto, solo debe implementar aquellos operadores que sean apropiados para el tipo que se está desarrollando. Por ejemplo, para tipos de valores aritméticos como Cantidad tiene mucho sentido proporcionar un operador más, pero para dominios específicos tipos orientados a datos como Person no lo hace. 22.2.3 Implementación de sobrecarga de operadores Para implementar operadores como ‘+’ en una clase definida por el usuario es necesario implementar métodos específicos que luego se asignan a la aritmética o lógica operadores utilizados por los usuarios de la clase. Estos métodos se consideran especiales porque comienzan y terminan con un guion bajo doble (’__’). Estos métodos se consideran privados y, por lo general, restringido para implementaciones orientadas a Python (ya las hemos visto con métodos como init() y str()). Como ejemplo, supongamos que queremos implementar los operadores ‘+’ y ‘−’ para nuestro tipo Cantidad. También queremos que nuestro tipo de cantidad tenga un valor real y ser capaz de convertirse en una cadena con fines de impresión. Para implementar los operadores ‘+’ y ‘−’ necesitamos proporcionar dos métodos especiales uno proporcionará la implementación del operador ‘+’ y otro proporcionará el implementación del operador ‘−’: p1 = Persona(‘Juan’) p2 = Persona(‘Denise’) p3 = p1 + p2 242 22 Sobrecarga del operador
popular post
Temas de Pregrado en Ciencias de la Computación Guía avanzada a Python 3 Programación Juan caza
WeiterlesenTemas de Pregrado en Ciencias de la Computación Guía avanzada a Python 3 Programación Juan caza
Weiterlesen• https://docs.python.org/3/ El sitio principal de documentación de Python 3. Contiene tutoriales, referencias de bibliotecas, guías de configuración e instalación, así como Python cómo-tos • https://docs.
Weiterlesen