3_Ejercicio 1: robot1 y robot 2 ____programacion orientada a objetos
Sirve intérprete online de python 3, la consola de Python instalada(q se llama REPL) o Google Colab
¡¡¡OJO!!!Cuidado con la indentación
EXPLICACIÓN MUY buena(_mar_di_c)
En programación orientada a objetos (y específicamente en Python):
Función: Es un bloque de código reutilizable definido con
defde forma independiente (fuera de una clase).Método: Es exactamente lo mismo (una función), pero al estar definida dentro de una clase, pasa a llamarse método porque
pertenece a esa clase y define el comportamiento de
los objetos que se creen a partir de ella.
Detalle clave:
El parámetro self que ves en por en este ejemplo:
class CuentaBancaria:
def __init__(self, titular, saldo_inicial):
self.titular = titular
self.__saldo = saldo_inicial # Atributo privado con __
def depositar(self, monto):
if monto > 0:
self.__saldo += monto
else:
raise ValueError("El monto debe ser positivo")
def depositar(self, monto): es lo que convierte a esa función en un método de instancia. Gracias a self, el método sabe exactamente a cuál cuenta bancaria concreta debe sumarle el dinero (por ejemplo, si tienes la cuenta de Ana y la de Carlos, self distingue de quién es el saldo que se está modificando).
Muy importante la siguiente explicación:
class Robot:
# Atributo de Clase (Común a todos)
especie = "Autómata Inteligente"
class Robot: Es el plano de la fábrica. Le estamos diciendo a Python: "Voy a crear un nuevo tipo de objeto llamado Robot".
especie = "Autómata Inteligente": Es una regla general. Todos los robots que salgan de este molde van a pertenecer a esta especie. No importa cómo los bautices, todos llevan esta característica de fábrica compartida.
def __init__(self, nombre, modelo, color):
# Atributos de Instancia (Únicos)
self.nombre = nombre
self.modelo = modelo
self.color = color
self.bateria = 100
¡¡Ojo!!!HAY UN ESPACIO DESPUÉS DEL DEF, ANTES DEL __INIT__
Cuando le das a "Crear nuevo personaje", aparece una ventana para rellenar datos. Eso es el __init__ (el constructor).
self: Significa "este mismo" o "el propio". Cuando creas al robot,selfes la etiqueta que le ponemos a ese robot en particular para no confundirlo con los demás.Los datos únicos (
nombre,modelo,color): Son las opciones que tú eliges al crearlo. A uno lo puedes llamar "Robín", modelo "X-5", de color "rosa pastel", y a otro "Bip", modelo "Z-9", de color "azul".self.bateria = 100: Es un valor por defecto. No te pedimos que lo escribas al crearlo; por regla general, todos empiezan con la batería al 100%.
def saludar(self):
return f"¡Hola! Soy {self.nombre}"
Un objeto no solo tiene datos (como su color o nombre), sino también acciones que puede realizar.
saludares una función dentro del robot (a las funciones que viven dentro de una clase las llamamos métodos) Cuando le dices a tu robot que salude, él mira su propio nombre (self.nombre) y te dice: "¡Hola! Soy Robín".
En resumen:
La clase (
Robot) es el creador de personajes.Los atributos (
nombre,color,batería) son las características de tu personaje.Los métodos (
saludar) son lo que tu personaje sabe hacer.
Hasta ahora solo hemos escrito el molde (la fábrica de robots), pero todavía no le hemos dicho a la fábrica que fabrique ninguno ni que los ponga a hablar. Es como tener la receta de un pastel pero sin meter los ingredientes en el horno todavía.
Para que haga algo, necesitamos dar el siguiente paso: crear los objetos (las instancias) y llamar a sus acciones.
¿Qué acabamos de hacer?
robot1 = Robot(...): Aquí es donde "compramos" un robot del molde y le pasamos sus datos reales (nombre,modelo,color).print(...): Le decimos a Python que imprima en la pantalla lo que devuelven las funciones o los datos de nuestros robots.return f"¡Hola! Soy {self.nombre}"
f le avisa a Python: "Oye, dentro de este texto vas a encontrar llaves {} con variables adentro, por favor reemplázalas por su valor real".Sin la f (Forma + antigua ):
Tendrías que sumar textos y variables con un signo + así:
return "¡Hola! Soy " + self.nombre
La F de "Formato": La f le avisa a Python que vas a formatear el texto usando llaves {} para meter variables. Piensa en: "¡Voy a darle formato a este texto!".
La F de "Fácil": Porque usar la f hace que sea muchísimo más fácil y limpio escribir frases con variables que andar sumando con signos +.
Imagina que la F significa "Fusión": Es el momento en el que el texto y la variable se fusionan gracias a las llaves {}.
Los atributos de clase (como especie) o los atributos de instancia (como color o batería)
no son obligatorios en el sentido de que Python te obligue a ponerlos.
Tú decides qué características quieres que tenga tu molde.
def __init__(self, nombre, modelo, color):
- Se llama __init__ porque viene de la palabra "inicializar"
(o initialize en inglés).
Cada vez que creas objetos que necesitan tener sus propias características individuales,
sí, siempre hay que usar el __init__ para inicializarlos.
EXPLICACIÓN MUY importante:
Conversación con Gemini
¡Prueba a copiar el ejerciCIo completo y a ejecutarlo en Colab para ver cómo cobra vida!