Skip to content

Instantly share code, notes, and snippets.

@j2deme
Last active October 24, 2023 01:28
Show Gist options
  • Save j2deme/268023349c32ee08a4113151bd673779 to your computer and use it in GitHub Desktop.
Save j2deme/268023349c32ee08a4113151bd673779 to your computer and use it in GitHub Desktop.
Polimorfismo
from abc import ABC, abstractmethod
from mixinMortalidad import MixinMortalidad
class Animal(ABC, MixinMortalidad):
def __init__(self, nombre="", edad=1):
self.nombre = nombre
self.edad = edad
@abstractmethod
def comer(self):
pass
def dormir(self):
print("El animal está durmiendo 💤")
from animal import Animal
class Gato(Animal):
def comer(self):
print("El gato está comiendo 🐟")
from animal import Animal
class Leon(Animal):
def comer(self):
print("El león esta comiendo 🦓")
from perro import Perro
from gato import Gato
from leon import Leon
from ornitorrinco import Ornitorrinco
from animal import Animal
def main():
lomito = Perro()
michi = Gato()
alex = Leon()
perry = Ornitorrinco(nombre="Perry")
# animal = Animal() # No se puede instanciar una clase abstracta
lomito.comer()
lomito.dormir()
michi.comer()
michi.dormir()
print("== EJEMPLO ==")
# Uso del polimorfismo
# Mediante el uso del polimorfismo, podemos crear una lista de objetos de diferentes clases
# que heredan de la misma clase padre y en consecuencia, pueden ser tratados de la misma manera
animales = [lomito, michi, alex, perry]
for animal in animales:
animal.comer() # Método sobreescrito
animal.dormir() # Método heredado
animal.morir() # Método del Mixin
if __name__ == "__main__":
main()
from animal import Animal
class Mamifero(Animal):
def __init__(self, nombre="", edad=1, especie="Mamífero"):
super().__init__(nombre, edad)
self.especie = especie
def amamantar(self):
print("🍼")
def parir(self):
print("👶🏻")
class MixinMortalidad:
def morir(self):
print("💀")
from mamifero import Mamifero
from oviparo import Oviparo
class Ornitorrinco(Mamifero, Oviparo):
def __init__(self, nombre="", edad=1):
super().__init__(nombre, edad)
self.NUMERO_HUEVOS = 0
def comer(self):
print("🐞🐛🐚")
def morir(self):
print("Oh! me muero! 😵")
class Oviparo:
NUMERO_HUEVOS = 0
def poner_huevo(self):
print("🥚")
self.NUMERO_HUEVOS += 1
from animal import Animal
class Perro(Animal):
def comer(self):
print("El perro está comiendo 🍖")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment