Advertisement
teslariu

objetos

Jul 6th, 2023
896
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.19 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. '''
  4. Programación orientada a objetos
  5. - es un paradigma de programación que proporciona un medio para
  6. estructurar programas para que las propiedades y los comportamientos se
  7. agrupen en objetos individuales
  8.  
  9. - POO modela entidades del mundo real como objetos de software que
  10. tiene algunos datos asociados con ellos y pueden realizar determinadas
  11. funciones
  12.  
  13. CLASES e INSTANCIAS:
  14. - clases: se utilizan para crear estructuras de datos definidas por
  15.    un usuario.
  16. - instancias: es un objeto en particular de una clase (sustantivos)
  17. - métodos: son las funciones de las clases que hacen algo (verbos)
  18. - atributos: son las propiedades (adjetivos)
  19.  
  20. ej:
  21. clase Perro
  22. instancias: RinTinTin, Lassie, Laika, Cacho
  23. metodos: ladrar, dormir, esCaniche
  24. atributos: raza, edad, pelaje
  25.  
  26. clase Futbolista:
  27. instancias: Messi, Ronaldo, Maradona
  28. metodos: patear, atajar,
  29. atributos: esArgentino, altura, edad, peso
  30.  
  31. en python los metodos con doble guion bajo se denominan metodos
  32. magicos o dunder methods
  33.  
  34. class Perro:
  35.    # Atributo de clase
  36.    especie = "Canis familiaris"
  37.    
  38.    # metodos
  39.    def __init__(self, nombre, edad):
  40.        """Crea los atributos de la instancia"""
  41.        self.nombre = nombre
  42.        self.edad = edad
  43.        
  44.    def __str__(self):
  45.        """Describe al objeto"""
  46.        return f"{self.nombre} tiene {self.edad} años de edad"
  47.        
  48.    def __add__(self1, self2):
  49.        return f"han tenido cachorros"
  50.        
  51.    def ladra(self, sonido):
  52.        """Devuelve como habla el perro"""
  53.        return f"{self.nombre} dijo {sonido}"
  54.        
  55. # creo las instancias
  56. tronco = Perro("Tronco", 4)  
  57. duquesa = Perro("Duquesa", 3)
  58.  
  59.  
  60. print(tronco)
  61. print(tronco.ladra("woof woof"))
  62. print(tronco + duquesa)
  63.  
  64. # los atributos de clase se pueden modificar
  65. tronco.especie = "perro marca calle"
  66. print(tronco.especie)
  67. print(duquesa.especie)
  68.  
  69.  
  70. # herencia: es el proceso por el cual una clase asume atributos y metodos
  71. # de otra llamada clase padre o principal. La nueva clase se denomina hija o
  72. # secundaria
  73.  
  74. # las clases secundarias pueden modificar los metodos y/o atributos heredados
  75.  
  76. class JackRusselTerrier(Perro):
  77.    def ladra(self, sonido= "Arf"):
  78.        return f"{self.nombre} dijo {sonido}"
  79.        
  80. class Doberman(Perro):
  81.    def ladra(self, sonido= "GUAU"):
  82.        return f"{self.nombre} dijo {sonido}"
  83.  
  84. killer = Doberman("Killer",2)
  85. print(killer)
  86. print(killer.ladra())
  87.  
  88. # verifico que tipo de instancia es killer
  89. print(f"Killer es un doberman: {isinstance(killer,Doberman)}")
  90. print(f"Killer es un JackRusselTerrier: {isinstance(killer,JackRusselTerrier)}")
  91. print(f"Killer es un perro: {isinstance(killer,Perro)}")
  92.  
  93.  
  94. # POLIMORFISMO: usar un metodo con el mismo nombre pero de diferentes
  95. # clases
  96.  
  97. class Gato():
  98.    def __init__(self, nombre):
  99.        self.nombre = nombre
  100.        
  101.    def hablar(self):
  102.        return "MIAU"
  103.        
  104. class Perro():
  105.    def __init__(self, nombre):
  106.        self.nombre = nombre
  107.        
  108.    def hablar(self):
  109.        return "GUAU"
  110.        
  111. # uso del polimorfismo
  112. def escuchar_mascota(animal):
  113.    return animal.hablar()
  114.    
  115. cacho = Perro("Cacho")
  116. fufu = Gato("Fufu")
  117.  
  118. print(f"Un perro dice {escuchar_mascota(cacho)}")
  119. print(f"Un gato dice {escuchar_mascota(fufu)}")
  120.  
  121.  
  122. # lo mismo con herencia
  123. class Animal():
  124.    def hablar(self):
  125.        pass
  126.        
  127. class Gato1(Animal):
  128.    def __init__(self, nombre):
  129.        self.nombre = nombre
  130.        
  131.    def hablar(self):
  132.        return "MIAU"
  133.        
  134. class Perro1(Animal):
  135.    def __init__(self, nombre):
  136.        self.nombre = nombre
  137.        
  138.    def hablar(self):
  139.        return "GUAU"
  140.  
  141. cacho2 = Perro1("Cacho")
  142. fufu2 = Gato1("Fufu")
  143.  
  144. print(f"Un perro dice {cacho2.hablar()}")
  145. print(f"Un gato dice {fufu2.hablar()}")
  146. '''
  147.  
  148. ### HERENCIA MULTIPLE
  149. class Madre:
  150.     def __init__(self):
  151.         self.madre = "Ana"
  152.         self.a = "Mama es la mejor"
  153.  
  154. class Padre:
  155.     def __init__(self):
  156.         self.padre = "Juan"
  157.         self.a = "Papa es el mejor"
  158.        
  159. class Hijo(Madre,Padre):
  160.     pass
  161.    
  162.  
  163. pepe = Hijo()
  164. print(pepe.a)
  165. print(pepe.madre)
  166. print(pepe.padre)
  167.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement