MEJOR SITIO PARA DESARROLLADORES WEB

Python Tutorial

Python HOGAR Python Intro Python Empezar Python Sintaxis Python Comentarios Python Variables Python Tipos de datos Python Números Python Fundición Python Instrumentos de cuerda Python Booleanos Python Operadores Python Liza Python Tuplas Python Conjuntos Python Diccionarios Python If...Else Python While Bucles Python For Bucles Python Funciones Python Lambda Python Matrices Python Clases/Objetos Python Herencia Python Iteradores Python Polimorfismo Python Alcance Python Módulos Python Fechas Python Math Python JSON Python RegEx Python PIP Python Try...Except Python Entrada del usuario Python Formato de cadena

Manejo de archivos

Python Manejo de archivos Python Leer archivos Python Escribir/Crear Archivos Python Borrar archivos

Python Módulos

NumPy Tutorial Pandas Tutorial SciPy Tutorial Django Tutorial

Python Matplotlib

Matplotlib Intro Matplotlib Empezar Matplotlib Pyplot Matplotlib Graficado Matplotlib Marcadores Matplotlib Línea Matplotlib Etiquetas Matplotlib Red Matplotlib Subtramas Matplotlib Dispersión Matplotlib Barras Matplotlib Histogramas Matplotlib Gráficos circulares

Aprendizaje automático

Empezando Modo Mediana Media Desviación Estándar Percentil Distribución de datos Distribución normal de datos Gráfico de dispersión Regresión lineal Regresión polinómica Regresión múltiple Escala Entrenar/Prueba Árbol de decisión Matriz de confusión Agrupación jerárquica Regresión logística Búsqueda de cuadrícula Datos categóricos K-medias Agregación de arranque Validación cruzada AUC - ROC Curva K-vecinos más cercanos

Python MySQL

MySQL Empezar MySQL Crear base de datos MySQL Crear mesa MySQL Insertar MySQL Seleccionar MySQL Dónde MySQL Ordenar por MySQL Borrar MySQL Mesa plegable MySQL Actualizar MySQL Límite MySQL Unirse

Python MongoDB

MongoDB Empezar MongoDB Crear base de datos MongoDB Crear colección MongoDB Insertar MongoDB Encontrar MongoDB Consulta MongoDB Clasificar MongoDB Borrar MongoDB Colección de gotas MongoDB Actualizar MongoDB Límite

Python Referencia

Python Descripción general Python Funciones integradas Python Métodos de cadena Python Métodos de lista Python Métodos de diccionario Python Métodos de tupla Python Establecer métodos Python Métodos de archivo Python Palabras clave Python Excepciones Python Glosario

Referencia del módulo

Módulo aleatorio Módulo de Solicitudes Módulo de Estadísticas Módulo de Matemáticas cMath Módulo

Python Cómo

Eliminar lista duplicada Invertir una cadena Suma dos números

Python Ejemplos

Python Ejemplos Python Compilador Python Ejercicios Python Prueba Python Campo de entrenamiento Python Certificado

Python. Lecciones para principiantes

Ua En

Python Polimorfismo


La palabra "polimorfismo" significa "muchas formas" y en programación se refiere a métodos/funciones/operadores con el mismo nombre que se pueden ejecutar en muchos objetos o clases.


Polimorfismo de función

Un ejemplo de una función de Python que se puede utilizar en diferentes objetos es la función len().

String / Cadena

Para cadenas len() devuelve el número de caracteres:

Ejemplo

x = "Hello World!"

print(len(x))
Inténtalo tú mismo »

Tuple / Tupla

Para tuplas, len() devuelve el número de elementos de la tupla:

Ejemplo

mytuple = ("apple", "banana", "cherry")

print(len(mytuple))
Inténtalo tú mismo »

Dictionary / Diccionario

Para diccionarios, len() devuelve el número de pares clave/valor en el diccionario:

Ejemplo

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}

print(len(thisdict))
Inténtalo tú mismo »

Polimorfismo de clase

El polimorfismo se usa a menudo en métodos de clase, donde podemos tener varias clases con el mismo nombre de método.

Por ejemplo, digamos que tenemos tres clases: Car, Boat y Plane, y todos tienen un método llamado move():

Ejemplo

Diferentes clases con el mismo método:

class Car:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Drive!")

class Boat:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Sail!")

class Plane:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Fly!")

car1 = Car("Ford", "Mustang")       #Crear una clase de Car
boat1 = Boat("Ibiza", "Touring 20") #Crear una clase de Boat
plane1 = Plane("Boeing", "747")     #Crear una clase de Plane

for x in (car1, boat1, plane1):
  x.move()
Inténtalo tú mismo »

Mira el bucle for al final. Debido al polimorfismo, podemos ejecutar el mismo método para las tres clases.


Polimorfismo de clase de herencia

¿Qué pasa con las clases con clases secundarias con el mismo nombre? ¿Podemos usar polimorfismo allí?

Sí. Si usamos el ejemplo anterior y creamos una clase principal llamada Vehicle y creamos Car, Boat, Plane clases secundarias de Vehicle, las clases secundarias heredan los métodos Vehicle, pero puede anularlos:

Ejemplo

Crea una clase llamada Vehicle y crea Car, Boat, Plane clases secundarias de Vehicle:

class Vehicle:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Move!")

class Car(Vehicle):
  pass

class Boat(Vehicle):
  def move(self):
    print("Sail!")

class Plane(Vehicle):
  def move(self):
    print("Fly!")

car1 = Car("Ford", "Mustang") #Crear un objeto de Car
boat1 = Boat("Ibiza", "Touring 20") #Crear un objeto de Boat
plane1 = Plane("Boeing", "747") #Crear un objeto de Plane

for x in (car1, boat1, plane1):
  print(x.brand)
  print(x.model)
  x.move()
Inténtalo tú mismo »

Las clases secundarias heredan las propiedades y métodos de la clase principal.

En el ejemplo anterior puedes ver que la clase Car está vacía, pero hereda brand, model y move() de Vehicle.

Las clases Boat y Plane también heredan la brand, model y move() del Vehicle, pero ambos anulan el método move().

Debido al polimorfismo, podemos ejecutar el mismo método para todas las clases.