Polimorfismo en pitón

Polimorfismo en pitón
Polimorfismo significa "muchas formas."Polimorfismo Una característica importante de la programación orientada a objetos (OOP). Cuando el mismo método se declara varias veces, para múltiples propósitos y en diferentes clases, entonces se llama polimorfismo. Otra característica de OOP es herencia, a través del cual se puede crear la clase infantil heredando las características de la clase principal. A veces, requiere que el programador declare un método del mismo nombre en las clases de padres e hijos para diversos fines. Este tipo de tarea también se puede implementar utilizando el polimorfismo. Este artículo explica cómo el polimorfismo puede definirse en la programación orientada a objetos (OOP).

Ejemplo 1: polimorfismo con funciones y objetos

El siguiente script muestra el uso del polimorfismo entre dos clases diferentes. Se utiliza una función para crear el objeto de esas clases. El valor de la variable nombrada color se inicializa en el __en eso__() método de ambos 'Loro' y el 'Avestruz'clases en el momento de la creación de objetos. El características() El método se define en ambas clases, pero la salida del método para cada clase es un poco diferente. El Crear objeto() la función se usa para crear un objeto de la clase. Esta función se ejecuta dos veces para crear el objeto en el 'Loro'clase y en el'Avestruz' clase. Cada uno llamará al método características () de ambas clases e imprimirá la salida.

#!/usr/bin/env python3
# Defina la clase de loro
Clase Parrot ():
def __init __ (self, color):
ser.color = color
CARACTERÍSTICAS DE DEF (Self):
imprimir ("El color del loro es %s" %self.color)
Imprimir ("El loro puede volar")
# Defina la clase de avestruz
Clase Ostrich ():
def __init __ (self, color):
ser.color = color
CARACTERÍSTICAS DE DEF (Self):
imprimir ("El color del avestruz es %s" %self.color)
Imprimir ("El avestruz no puede volar")
# Defina la función para llamar al método de la clase
Def create_object (objeto):
Objeto.características()
# Crear objeto de la clase Parrot
Create_object (parrot ('verde'))
# Crear objeto de la clase de avestruz
Create_object (avestruce ('blanco y negro'))

Producción

La siguiente salida muestra que el objeto del 'Loro'La clase se crea con'Verde'Como el color valor. La función imprime la salida llamando al características() método de 'Loro' clase. A continuación, el objeto del 'Avestruz'La clase se crea con'En blanco y negro'Como el color valor. La función imprime la salida llamando al características() método de 'Avestruz' clase.

Ejemplo 2: polimorfismo en métodos de clase no relacionados

Como en el ejemplo anterior, el siguiente script muestra el uso del polimorfismo en dos clases diferentes, pero no se usa una función personalizada para declarar el objeto. El __en eso__() método de ambos 'Gerente' y 'Oficinista'Las clases inicializarán las variables necesarias. El polimorfismo se implementa aquí creando el post_details () y salario() Métodos dentro de ambas clases. El contenido de estos métodos es diferente para cada una de estas clases. A continuación, las variables de objeto se crean para ambas clases y se iteran por un para un bucle. En cada iteración, el post_details () y salario() Los métodos están llamados a imprimir la salida.

#!/usr/bin/env python3
# Defina una clase llamada gerente
Gerente de clase:
def __init __ (self, nombre, departamento):
ser.nombre = nombre
ser.post = 'gerente'
ser.Departamento = Departamento
# Definir la función para establecer detalles
Def post_details (self):
Si uno mismo.departamento.superior () == 'hr':
ser.Básico = 30000
demás:
ser.Básico = 25000
ser.Houserent = 10000
ser.Transporte = 5000
imprimir ("La publicación de %s es %s" %(self.nombre, yo.correo))
# Definir la función para calcular el salario
Def SALARY (Self):
salario = yo.básico + yo.Houserent + Self.transporte
salario de devolución
# Defina una clase llamada Clerk
empleado de clase:
def __init __ (self, nombre):
ser.nombre = nombre
ser.post = 'empleado'
# Definir la función para establecer detalles
Def post_details (self):
ser.Básico = 10000
ser.Transporte = 2000
imprimir ("La publicación de %s es %s" %(self.nombre, yo.correo))
# Definir la función para calcular el salario
Def SALARY (Self):
salario = yo.básico + yo.transporte
salario de devolución
# Crear objetos para las clases
gerente = gerente ("Kabir", "HR")
empleado = empleado ("robin")
# Llame a las mismas funciones de las diferentes clases
para OBJ en (Gerente, Secretario):
obj.post_details ()
imprimir ("El salario es", obj.salario())

Producción

La siguiente salida muestra que el objeto del 'Pesebre'La clase se usa en la primera iteración del para el bucle y el salario del administrador se imprimen después del cálculo. El objeto del 'Oficinista'La clase se usa en la segunda iteración del para El bucle y el salario del empleado se imprimen después del cálculo.

Ejemplo 3: polimorfismo en métodos de clase relacionados

El siguiente script muestra el uso del polimorfismo entre dos clases de niños. Aquí, ambos 'Triángulo' y 'Círculo'son las clases infantiles de la clase madre nombrada'Forma geometrica.'Según la herencia, la clase infantil puede acceder a todas las variables y métodos de la clase principal. El __en eso__() método de 'Forma geometrica'La clase se usa en ambas clases infantiles para inicializar la variable nombre mediante el uso del súper() método. Los valores del base y altura del 'Triángulo'La clase se inicializará en el momento de la creación de objetos. De la misma manera, los valores de radio del 'Círculo'La clase se inicializará en el momento de la creación de objetos. La fórmula para calcular el área de un triángulo es ½ × base × altura, que se implementa en el área() método de 'Triángulo' clase. La fórmula para calcular el área de un círculo es 3.14 × (radio)2, que se implementa en el área() método de 'Círculo' clase. Los nombres de ambos métodos son los mismos, aquí, pero el propósito es diferente. A continuación, se tomará un valor de cadena del usuario para crear un objeto y llamar al método en función del valor. Si el usuario tipos 'triángulo', entonces un objeto de 'Triángulo' se creará la clase, y si el usuario tipos de usuarios, entonces un objeto del 'Círculo' Se creará la clase. Si el usuario escribe algún texto sin 'triángulo' o 'círculo', entonces no se creará ningún objeto y se imprimirá un mensaje de error.

#!/usr/bin/env python3
# Defina la clase principal
clase Geometric_Shape:
def __init __ (self, nombre):
ser.nombre = nombre
# Defina la clase infantil para calcular el área del triángulo
Triángulo de clase (geométrico_shape):
def __init __ (self, nombre, base, altura):
súper().__init __ (nombre)
ser.base = base
ser.altura = altura
Área Def (yo):
resultado = 0.5 * yo.base * yo.altura
imprimir ("\ nthe área del %s = %5.2f " %(yo mismo.nombre, resultado))
# Defina la clase infantil para calcular el área del círculo
círculo de clases (geométrico_shape):
def __init __ (self, nombre, radio):
súper().__init __ (nombre)
ser.radio = radio
Área Def (yo):
resultado = 3.14 * yo.radio ** 2
imprimir ("\ nthe área del %s = %5.2f " %(yo mismo.nombre, resultado))
cal_area = input ("¿Qué área desea calcular? Triángulo/Círculo \ n ")
Si Cal_area.superior () == 'triángulo':
base = float (entrada ('Ingrese la base del triángulo:'))
altura = float (entrada ('Ingrese la altura del triángulo:'))
obj = triángulo ('triángulo', base, altura)
obj.área()
Elif Cal_area.superior () == 'círculo':
radio = float (entrada ('Ingrese el radio del círculo:'))
obj = círculo ('círculo', radio)
obj.área()
demás:
Imprimir ("Entrada incorrecta")

Producción

En la siguiente salida, el script se ejecuta dos veces. La primera vez, triángulo se toma como la entrada y el objeto se inicializa con tres valores ','Triángulo', base, y altura. Estos valores se usan para calcular el área del triángulo y la salida se imprimirá. La segunda vez, círculo se toma como entrada, y el objeto se inicializa con dos valores ','Círculo' y radio. Estos valores se utilizan para calcular el área del círculo y la salida se imprimirá.

Conclusión

Este artículo utilizó ejemplos fáciles para explicar tres usos diferentes del polimorfismo en Python. El concepto de polimorfismo también se puede aplicar sin clases, un método que no se explica aquí. Este artículo ayudó a los lectores a aprender más sobre cómo aplicar el polimorfismo en la programación de Python basada en objetos.