Contenido del curso
Día 1
Día 2
Día 3
Día 4
Día 5
Día 6
Día 7
Día 8
Día 9
Día 10
Día 11
Día 12
Día 13
Día 14
Día 15
Día 16
Día 17
Día 18
Día 19
Día 20
Día 21
Playground - Jerarquía de animales usando herencia
Contenido del curso
Playground - Jerarquía de animales usando herencia
Fidel Parabacuto
Estudianteiecgerman .
EstudianteCamilo Andrés Rodriguez Higuera
EstudianteVictor Javier Vidal Durón
EstudianteWilly Samuel Paz Colque
EstudianteLuis Kennedy Saavedra Fuentes
EstudianteJhon Freddy Tavera Blandon
EstudianteHarold Edward Rodriguez Navarro
EstudianteSalomon Chambi
EstudianteVictor Ortiz
EstudianteWaldir Zapata Garcia
EstudianteWaldir Zapata Garcia
EstudianteAlejandro Anaya
EstudianteEduardo Peña Ramos
EstudianteJosé Miguel Reyes
EstudianteDaniel Salazar Munoz
EstudianteFernando Jesús Núñez Valdez
EstudianteLinda Atenea Mejía Usme
EstudianteHarold Zurita Simon
EstudianteLuis Gutiérrez Aguirre
EstudianteLes dejo mi aporte para que no repitan el objeto en todas las clases
. . . . . .
class Animal: def __init__(self, name, age, specie): self.name = name self.age = age self.specie = specie def getInfo(self): return { "name": self.name, "age": self.age, "specie": self.specie } class Mammal(Animal): def __init__(self, name, age, specie,hasFur): super().__init__(name, age, specie) self.hasFur = hasFur def getInfo(self): info = super().getInfo() info["hasFur"] = self.hasFur return info class Dog(Mammal): def __init__(self, name, age, breed): super().__init__(name, age, "dog",True) self.breed = breed def getInfo(self): info = super().getInfo() info["breed"] = self.breed return info def bark(self): return "woof!"
Si no fuera por el video de soy dalto, estaría igual que el día que se pidió este reto que fue el Martes 1 Ago 2023, no estoy diciendo que soy un experto, pero ya lo entiendo fácilmente, porque con la explicacioncita que dan en la clase 40 de Herencia en Python no es suficiente (y antes ponían al final esto y mas puedes aprender en el curso de fun..,ahora nada), al menos para alguien como yo que esta empezando de cero en todo.
mi solución:
class Animal: # creamos el metodo constructor con sus parametros def __init__(self, nombre, edad, especie): # definimos lo que le estamos pidiendo que sea igual a cada parametro self.nombre = nombre self.edad = edad self.especie = especie def getInfo(self): return { "nombre": self.nombre, "edad": self.edad, "especie": self.especie } # creamos la subclase Mamifero que hereda su clase padre Animal(SIN AGRAVIAR) class Mamifero(Animal): # se crea su metodo constructor y se heredan los parametros de la clase padre mas el parametro nuevo def __init__(self, nombre, edad, especie, pelaje): # para poderlos heredar ocupamos usar super() super().__init__(nombre, edad, especie) # hacemos referencia al nuevo objeto "pelaje" self.pelaje = pelaje def getInfo(self): info = super().getInfo() info["pelaje"] = self.pelaje return info class Perro(Mamifero): def __init__(self, nombre, edad, criar): super().__inin__(nombre, edad, "perro", True) self.criar = criar def getInfo(self): info = super().getInfo() info["criar"] = self.criar return info def ladrar(self): return "woof!! woof!!" bird = Animal("pepe", 1, "bird") print(bird.getInfo()) hippo = Mamifero("bartolo", 3, "hippo", False) print(hippo.getInfo())
class Animal: def __init__(self, name, age, specie): self.name: str = name self.age: int = age self.specie: str = specie def getInfo(self): return { "name": self.name, "age": self.age, "specie": self.specie } class Mammal(Animal): def __init__(self, name, age, specie, hasFur): super().__init__(name, age, specie) self.hasFur = hasFur def getInfo(self): info = super().getInfo() info.update({"hasFur": self.hasFur}) return info class Dog(Mammal): def __init__(self, name, age, breed): super().__init__(name, age, "dog", True) self.breed = breed def bark(self): return "woof!" def getInfo(self): info = super().getInfo() info.update({"breed": self.breed}) return info
class Animal: def __init__(self, name, age, specie): self._name = name self._age = age self._specie = specie def getInfo (self): return { "name": self._name, "age": self._age, "specie": self._specie } class Mammal(Animal): def __init__(self, name, age, specie, hasFur): super().__init__(name, age, specie) self._hasFur = hasFur def getInfo (self): return { "name": self._name, "age": self._age, "specie": self._specie, "hasFur": self._hasFur } class Dog(Mammal): def __init__(self, name, age, breed): super().__init__(name, age, "dog", True) self._breed = breed def getInfo (self): return { "name": self._name, "age": self._age, "specie": self._specie, "hasFur": self._hasFur, "breed": self._breed } def bark(self): return "woof!"
Utilizando dict(**self.__dict__) en la clase padre para el metodo getInfo() ya no tuve necesidad de sobre escribir este metodo en el resto de clases que heredan de la clase padre
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
class Animal: def __init__(self, name, age, specie): self.name = name self.age = age self.specie = specie def getInfo(self): return dict(**self.__dict__) class Mammal(Animal): def __init__(self, name, age, specie, hasFur): super().__init__(name, age, specie) self.hasFur = hasFur class Dog(Mammal): def __init__(self, name, age, breed): super().__init__(name, age, 'dog', True) self.breed = breed def bark(self): return 'woof!' bird = Animal("pepe", 1, "bird") print(bird.getInfo()) hippo = Mammal("bartolo", 3, "hippo", False) print(hippo.getInfo()) dog = Dog("fido", 4, "pastor aleman"); print(dog.getInfo()) print(dog.bark())
Mi aporte: Bien contento porque paso el test a la primera. Gracias a Dios 🙏🏼 🎉🎊 . .
class Animal: """Class Animal. Base class""" def __init__(self, name, age, specie): self.name = name self.age = age self.specie = specie def getInfo(self): """Get info method.""" return { 'name': self.name, 'age': self.age, 'specie': self.specie, } class Mammal(Animal): """Class Mammal. SubClass of Class Animal""" def __init__(self, name, age, specie, hasFur): super().__init__(name, age, specie) self.hasFur = hasFur def getInfo(self): """Get info method""" return { 'name': self.name, 'age': self.age, 'specie': self.specie, 'hasFur': self.hasFur, } class Dog(Mammal): """Class Dog. SubClass of Class Mammal""" def __init__(self, name, age, breed): # super().__init__(name, age, "dog", True) super().__init__(name, age, specie="dog", hasFur=True) self.breed = breed def getInfo(self): """Get info method""" return { 'name': self.name, 'age': self.age, 'specie': self.specie, 'hasFur':self.hasFur, 'breed': self.breed, } def bark(self): """Bark method""" return f"woof!" # Example 1 # bird = Animal("pepe", 1, "bird") # r = bird.getInfo() # print(r)
# Ejemplo de uso bird = Animal("pepe", 1, "bird") print(bird.getInfo()) dog = Dog("Max", 3, "Labrador") print(dog.getInfo()) print(dog.bark())
Mi código:
. . . . . ``````python class Animal: def __init__(self, name, age, specie): self._name = name self._age = age self._specie = specie @property def name(self): return self._name @name.setter def name(self, new_name): self._name = new_name @property def age(self): return self._age @age.setter def age(self, new_age): self._age = new_age @property def specie(self): return self._specie @specie.setter def specie(self, new_specie): self.specie = new_specie def getInfo(self): return { 'name': self._name, 'age': self._age, 'specie': self._specie, } class Mammal(Animal): def __init__(self, name, age, specie , hasFur): super().__init__(name, age, specie) self._hasFur = hasFur @property def hasFur(self): return self._hasFur @hasFur.setter def hasFur(self, new_hasFur): self._hasFur = new_hasFur def getInfo(self): info = super().getInfo() info['hasFur'] = self._hasFur return info class Dog(Mammal): def __init__(self, name, age, breed): super().__init__(name, age, specie = 'dog', hasFur=True) self._hasFur = True self._breed = breed @property def breed(self): return self._breed @breed.setter def breed(self, new_breed): self._breed = new_breed def getInfo(self): info = super().getInfo() info['breed'] = self._breed return info def bark(self): return 'woof!'
Mi aporte:
class Animal: def __init__(self, name, age, specie): self.name = name self.age = age self.specie = specie def getInfo(self): return { 'name': self.name, 'age': self.age, 'specie': self.specie, } class Mammal(Animal): def __init__(self, name, age, specie, hasFur): super().__init__(name, age, specie) self.hasFur = hasFur def getInfo(self): return { 'name': self.name, 'age': self.age, 'specie': self.specie, 'hasFur': self.hasFur, } class Dog(Mammal): def __init__(self, name, age, breed, specie='dog', hasFur=True): super().__init__(name, age, specie, hasFur) self.breed = breed def getInfo(self): return { 'name': self.name, 'age': self.age, 'specie': self.specie, 'hasFur': self.hasFur, 'breed': self.breed, } def bark(self): return 'woof!'
Mi aporte: . . . . . . . . . . . . . . . . . . .
class Animal: def __init__(self, name, age, specie): # Tu código aquí 👇 self.name = name self.age = age self.specie = specie pass def getInfo(self): return dict(**self.__dict__) class Mammal(Animal): def __init__(self, name, age, specie, hasFur): # Tu código aquí 👇 super().__init__(name, age, specie) self.hasFur = hasFur pass class Dog(Mammal): def __init__(self, name, age, breed): # Tu código aquí 👇 super().__init__(name, age, 'dog', True) self.breed = breed pass def bark(self): return 'woof!'
class Animal: def __init__(self, name, age, specie): self.__name = name self.__age = age self.__specie=specie self.__dctanimal={} @property def age(self): return self.__age @age.setter def age(self, valor): self.__age = valor @property def name(self): return self.__name @name.setter def name(self, valor): self.__name = valor @property def specie(self): return self.__specie @specie.setter def specie(self, valor): self.__specie = valor def getInfo(self): self.__dctanimal["name"]=self.__name self.__dctanimal["age"]=self.__age self.__dctanimal["specie"]=self.__specie return self.__dctanimal class Mammal(Animal): def __init__(self, name, age, specie, hasFur): Animal.__init__(self,name, age, specie) self.hasfur = hasFur self.__dctanimammal={} def getInfo(self): #self.__dctanimal["name"]=self.__name #self.__dctanimal["age"]=self.__age #self.__dctanimal["specie"]=self.__specie self.__dctanimammal=super().getInfo() self.__dctanimammal["hasFur"]=self.hasfur return self.__dctanimammal class Dog(Mammal): def __init__(self, name, age, breed): super().__init__(name, age, "dog", True) self.breed = breed self.__dctanidog ={} def getInfo(self): #self.__dctanimal["name"]=self.__name #self.__dctanimal["age"]=self.__age #self.__dctanimal["specie"]=self.__specie #self.__dctanimal["hasFur"]=hasFur self.__dctanidog=super().getInfo() self.__dctanidog["breed"]=self.breed return self.__dctanidog def bark(self): #self.__dctanimal["name"]=self.__name #self.__dctanimal["age"]=self.__age #self.__dctanimal["specie"]=self.__specie #self.__dctanimal["hasFur"]=hasFur return "woof!" if __name__ == '__main__': bird = Animal("pepe", 1, "bird") print(bird.getInfo()) hippo = Mammal("bartolo", 3, "hippo", False) print(hippo.getInfo()) dog = Dog("fido", 4, "pastor aleman") print(dog.bark())
🛡️🛡️Escudo anti-spoilers🛡️🛡️
Mi solución al reto:
class Animal: def __init__(self, name, age, specie): self.name = name self.age = age self.specie = specie def getInfo(self): return dict(**self.__dict__) class Mammal(Animal): def __init__(self, name, age, specie, hasFur): super().__init__(name, age, specie) self.hasFur = hasFur def getInfo(self): return { **super().getInfo(), **self.__dict__ } class Dog(Mammal): def __init__(self, name, age, breed): super().__init__(name, age, "dog", True) self.breed = breed def getInfo(self): return { **super().getInfo(), **self.__dict__ } def bark(self): return "woof!"
Siempre es más divertido trabajar con perros jajaja Saludos. 🐶
Mi código:
class Animal: def __init__(self, name, age, specie): self.name = name self.age = age self.specie = specie def getInfo(self): return { "name": self.name, "age": self.age, "specie": self.specie } class Mammal(Animal): def __init__(self, name, age, specie, hasFur): super().__init__(name, age, specie) self.hasFur = hasFur def getInfo(self): info = super().getInfo() info["hasFur"] = self.hasFur return info class Dog(Mammal): def __init__(self, name, age, breed): super().__init__(name, age, "dog", True) self.breed = breed def getInfo(self): info = super().getInfo() info["breed"] = self.breed return info def bark(self): return "woof!"
def __init__(self, name, age, specie): self.name = name self.age = age self.specie = specie def getInfo(self): return { 'name': self.name, 'age' : self.age, 'specie' : self.specie, } class Mammal(Animal): def __init__(self, name, age, specie, hasFur): super().__init__(name, age, specie) self.hasFur = hasFur def getInfo(self): base = super().getInfo() base["hasFur"] = self.hasFur return base class Dog(Mammal): def __init__(self, name, age, breed): super().__init__(name, age,'dog', True) self.breed = breed def getInfo(self): base = super().getInfo() base["breed"] = self.breed return base def bark(self): return 'woof!'
Mi solución: . . . . . . . . . . . . . .
class Animal: def __init__(self, name, age, specie): self.name = name self.age = age self.specie = specie def getInfo(self): return { 'name': self.name, 'age': self.age, 'specie': self.specie } class Mammal(Animal): def __init__(self, name, age, specie, hasFur): super().__init__(name, age, specie) self.hasFur = hasFur def getInfo(self): return super().getInfo() | {'hasFur': self.hasFur} class Dog(Mammal): def __init__(self, name, age, breed): super().__init__(name, age, specie = 'dog', hasFur = True) self.breed = breed def getInfo(self): return super().getInfo() | {'breed': self.breed} def bark(self): return 'woof!'
Esta es mi solución, sin embargo cabe resaltar que hay soluciones mejores de otros compañeros en las que heredan el método getInfo() en lugar de reescribirlo completamente.
class Animal: def __init__(self, name, age, specie): self.name = name self.age = age self.specie = specie def getInfo(self): return { "name": self.name, "age": self.age, "specie": self.specie } class Mammal(Animal): def __init__(self, name, age, specie, hasFur): super().__init__(name, age, specie) self.hasFur = hasFur def getInfo(self): return { "name": self.name, "age": self.age, "specie": self.specie, "hasFur": self.hasFur } class Dog(Mammal): def __init__(self, name, age, breed, specie="dog", hasFur=True): super().__init__(name, age, specie, hasFur) self.breed = breed self.specie = specie self.hasFur = hasFur def bark(self): return "woof!" def getInfo(self): return { "name": self.name, "age": self.age, "specie": self.specie, "breed": self.breed, "hasFur": self.hasFur, "specie": self.specie }
Solución ... Ejercicio interesante 😄 .
class Animal: def __init__(self, name, age, specie): self.name = name self.age = age self.specie = specie def getInfo(self): return { "name": self.name, "age": self.age, "specie": self.specie } class Mammal(Animal): def __init__(self,name, age, specie, hasFur): super().__init__(name, age, specie) self.hasFur = hasFur def getInfo(self): info = super().getInfo() info["hasFur"] = self.hasFur return info class Dog(Mammal): def __init__(self, name, age, breed): super().__init__(name, age, "dog", True) self.breed = breed def getInfo(self): info = super().getInfo() info["breed"] = self.breed return info def bark(self): return 'woof!'
class Animal: def __init__(self, name, age, specie): self.name = name self.age = age self.specie = specie def getInfo(self): return { "name": self.name, "age": self.age, "specie": self.specie } class Mammal(Animal): def __init__(self, name, age, specie, hasFur): super().__init__(name, age, specie) self.hasFur = hasFur def getInfo(self): info = super().getInfo() info["hasFur"] = self.hasFur return info class Dog(Mammal): def __init__(self, name, age, breed): super().__init__(name, age, 'dog', True) self.breed = breed def getInfo(self): info = super().getInfo() info["breed"] = self.breed return info def bark(self): return "woof!"
Aquí mi código, la verdad no entendía que especie se le asignaba el valor 'dog' y a hasFur True (algunas veces en las instrucciones viene la solución), además que se me estaba pasando poner el método getInfo en la clase Dog