Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- '''
- Programación orientada a objetos
- - es un paradigma de programación que proporciona un medio para
- estructurar programas para que las propiedades y los comportamientos se
- agrupen en objetos individuales
- - POO modela entidades del mundo real como objetos de software que
- tiene algunos datos asociados con ellos y pueden realizar determinadas
- funciones
- CLASES e INSTANCIAS:
- - clases: se utilizan para crear estructuras de datos definidas por
- un usuario.
- - instancias: es un objeto en particular de una clase (sustantivos)
- - métodos: son las funciones de las clases que hacen algo (verbos)
- - atributos: son las propiedades (adjetivos)
- ej:
- clase Perro
- instancias: RinTinTin, Lassie, Laika, Cacho
- metodos: ladrar, dormir, esCaniche
- atributos: raza, edad, pelaje
- clase Futbolista:
- instancias: Messi, Ronaldo, Maradona
- metodos: patear, atajar,
- atributos: esArgentino, altura, edad, peso
- en python los metodos con doble guion bajo se denominan metodos
- magicos o dunder methods
- class Perro:
- # Atributo de clase
- especie = "Canis familiaris"
- # metodos
- def __init__(self, nombre, edad):
- """Crea los atributos de la instancia"""
- self.nombre = nombre
- self.edad = edad
- def __str__(self):
- """Describe al objeto"""
- return f"{self.nombre} tiene {self.edad} años de edad"
- def __add__(self1, self2):
- return f"han tenido cachorros"
- def ladra(self, sonido):
- """Devuelve como habla el perro"""
- return f"{self.nombre} dijo {sonido}"
- # creo las instancias
- tronco = Perro("Tronco", 4)
- duquesa = Perro("Duquesa", 3)
- print(tronco)
- print(tronco.ladra("woof woof"))
- print(tronco + duquesa)
- # los atributos de clase se pueden modificar
- tronco.especie = "perro marca calle"
- print(tronco.especie)
- print(duquesa.especie)
- # herencia: es el proceso por el cual una clase asume atributos y metodos
- # de otra llamada clase padre o principal. La nueva clase se denomina hija o
- # secundaria
- # las clases secundarias pueden modificar los metodos y/o atributos heredados
- class JackRusselTerrier(Perro):
- def ladra(self, sonido= "Arf"):
- return f"{self.nombre} dijo {sonido}"
- class Doberman(Perro):
- def ladra(self, sonido= "GUAU"):
- return f"{self.nombre} dijo {sonido}"
- killer = Doberman("Killer",2)
- print(killer)
- print(killer.ladra())
- # verifico que tipo de instancia es killer
- print(f"Killer es un doberman: {isinstance(killer,Doberman)}")
- print(f"Killer es un JackRusselTerrier: {isinstance(killer,JackRusselTerrier)}")
- print(f"Killer es un perro: {isinstance(killer,Perro)}")
- # POLIMORFISMO: usar un metodo con el mismo nombre pero de diferentes
- # clases
- class Gato():
- def __init__(self, nombre):
- self.nombre = nombre
- def hablar(self):
- return "MIAU"
- class Perro():
- def __init__(self, nombre):
- self.nombre = nombre
- def hablar(self):
- return "GUAU"
- # uso del polimorfismo
- def escuchar_mascota(animal):
- return animal.hablar()
- cacho = Perro("Cacho")
- fufu = Gato("Fufu")
- print(f"Un perro dice {escuchar_mascota(cacho)}")
- print(f"Un gato dice {escuchar_mascota(fufu)}")
- # lo mismo con herencia
- class Animal():
- def hablar(self):
- pass
- class Gato1(Animal):
- def __init__(self, nombre):
- self.nombre = nombre
- def hablar(self):
- return "MIAU"
- class Perro1(Animal):
- def __init__(self, nombre):
- self.nombre = nombre
- def hablar(self):
- return "GUAU"
- cacho2 = Perro1("Cacho")
- fufu2 = Gato1("Fufu")
- print(f"Un perro dice {cacho2.hablar()}")
- print(f"Un gato dice {fufu2.hablar()}")
- '''
- ### HERENCIA MULTIPLE
- class Madre:
- def __init__(self):
- self.madre = "Ana"
- self.a = "Mama es la mejor"
- class Padre:
- def __init__(self):
- self.padre = "Juan"
- self.a = "Papa es el mejor"
- class Hijo(Madre,Padre):
- pass
- pepe = Hijo()
- print(pepe.a)
- print(pepe.madre)
- print(pepe.padre)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement