""
Mostrando las entradas con la etiqueta metodos. Mostrar todas las entradas
Mostrando las entradas con la etiqueta metodos. Mostrar todas las entradas

domingo, 26 de abril de 2026

Python II. POO, Objetos y herencias

 3.1.4 ¿Qué es un objeto?

Una clase (entre otras definiciones) es un conjunto de objetos. Un objeto es un ser perteneciente a una clase.

Un objeto es una encarnación de los requisitos, rasgos y cualidades asignados a una clase específica. Esto puede sonar simple, pero ten en cuenta las siguientes circunstancias importantes. Las clases forman una jerarquía.

Esto puede significar que un objeto que pertenece a una clase específica pertenece a todas las superclases al mismo tiempo. También puede significar que cualquier objeto perteneciente a una superclase puede no pertenecer a ninguna de sus subclases.

Por ejemplo: cualquier automóvil personal es un objeto que pertenece a la clase Vehículos Terrestres. También significa que el mismo automóvil pertenece a todas las superclases de su clase local; por lo tanto, también es miembro de la clase Vehículos.

Tu perro (o tu gato) es un objeto incluido en la clase Mamíferos Domesticados, lo que significa explícitamente que también está incluido en la clase Animales.

Cada subclase es más especializada (o más específica) que su superclase. Por el contrario, cada superclase es más general (más abstracta) que cualquiera de sus subclases.

Ten en cuenta que hemos supuesto que una clase solo puede tener una superclase; esto no siempre es cierto, pero discutiremos este tema más adelante.

3.1.5 Herencia

Definamos uno de los conceptos fundamentales de la programación de objetos, llamado herencia. Cualquier objeto vinculado a un nivel específico de una jerarquía de clases hereda todos los rasgos (así como los requisitos y cualidades) definidos dentro de cualquiera de las superclases.

La clase de inicio del objeto puede definir nuevos rasgos (así como requisitos y cualidades) que serán heredados por cualquiera de sus superclases.

No deberías tener ningún problema para hacer coincidir esta regla con ejemplos específicos, ya sea que se aplique a animales o vehículos.


3.1.6 ¿Qué contiene un objeto?

La programación orientada a objetos supone que cada objeto existente puede estar equipado con tres grupos de atributos:

Un objeto tiene un nombre que lo identifica de forma exclusiva dentro de su namespace (aunque también puede haber algunos objetos anónimos).

Un objeto tiene un conjunto de propiedades individuales que lo hacen original, único o sobresaliente (aunque es posible que algunos objetos no tengan propiedades).

Un objeto tiene un conjunto de habilidades para realizar actividades específicas, capaz de cambiar el objeto en sí, o algunos de los otros objetos.

Existe una pista (aunque esto no siempre funciona) que te puede ayudar a identificar cualquiera de las tres esferas anteriores. Cada vez que se describe un objeto y se usa:

Un sustantivo: probablemente se está definiendo el nombre del objeto.

Un adjetivo: probablemente se está definiendo una propiedad del objeto.

Un verbo: probablemente se está definiendo una actividad del objeto.

Dos ejemplos deberían servir como un buen ejemplo:

  • Un Cadillac rosa pasó rápidamente.
  • Nombre del objeto = Cadillac
  • Clase = Vehículos con ruedas
  • Propiedad = Color (rosa)
  • Actividad = Pasar (rápidamente)
  • Rodolfo es un gato grande que duerme todo el día.
  • Nombre del objeto = Rodolfo
  • Class = Gato
  • Propiedad = Tamaño (Grande)
  • Actividad = Dormir (Todo el día)




viernes, 3 de abril de 2026

Diferencias entre método y función

Un método es un tipo específico de función - se comporta como una función y se parece a una función, pero difiere en la forma en que actúa y en su estilo de invocación.

Una función no pertenece a ningún dato - obtiene datos, puede crear nuevos datos y (generalmente) produce un resultado.

Un método hace todas estas cosas, pero también puede cambiar el estado de una entidad seleccionada.

Un método es propiedad de los datos para los que trabaja, mientras que una función es propiedad de todo el código.

Esto también significa que invocar un método requiere alguna especificación de los datos a partir de los cuales se invoca el método.

Puede parecer desconcertante aquí, pero lo trataremos en profundidad cuando profundicemos en la programación orientada a objetos.

En general, una invocación de función típica puede tener este aspecto:

result = function(arg)
 

La función toma un argumento, hace algo, y devuelve un resultado.

Una invocación de un método típico usualmente se ve así:

result = data.method(arg)
 

Nota: el nombre del método está precedido por el nombre de los datos que posee el método. A continuación, se agrega un punto, seguido del nombre del método y un par de paréntesis que encierran los argumentos.

El método se comportará como una función, pero puede hacer algo más - puede cambiar el estado interno de los datos a partir de los cuales se ha invocado.

Puedes preguntar: ¿por qué estamos hablando de métodos, y no de listas?

Este es un tema esencial en este momento, ya que le mostraremos como agregar nuevos elementos a una lista existente. Esto se puede hacer con métodos propios de las listas, no por funciones.


La función len()

La longitud de una lista puede variar durante la ejecución. Se pueden agregar nuevos elementos a la lista, mientras que otros pueden eliminarse de ella. Esto significa que la lista es una entidad muy dinámica.

Si deseas verificar la longitud actual de la lista, puedes usar una función llamada len() (su nombre proviene de length - longitud).

La función toma el nombre de la lista como un argumento y devuelve el número de elementos almacenados actualmente dentro de la lista (en otras palabras - la longitud de la lista).

Observa la última línea de código en el editor, ejecuta el programa y verifica que valor imprimirá en la consola. ¿Puedes adivinar?

>>numbers = [10, 5, 7, 2, 1]

>>print("Contenido de la lista original:", numbers)  # Imprimiendo el contenido de la lista original.

>>numbers[0] = 111

>>print("\nContenido de la lista con cambio:", numbers)  # Imprimiendo contenido de la lista con 111.

>>numbers[1] = numbers[4]  # Copiando el valor del quinto elemento al segundo elemento.

>>print("Contenido de la lista con intercambio:", numbers)  # Imprimiendo contenido de la lista con intercambio.

>>print("\nLongitud de la lista:", len(numbers))  # Imprimiendo la longitud de la lista.

Console sync
Contenido de la lista original: [10, 5, 7, 2, 1]

Contenido de la lista con cambio: [111, 5, 7, 2, 1]
Contenido de la lista con intercambio: [111, 1, 7, 2, 1]

Longitud de la lista: 5


sábado, 20 de diciembre de 2025

365 Dias de Python. dia 9. Metodos avanzados de lista.

 ¡El Día 9 es para poner orden! Si el Día 8 fue sobre crear y modificar listas, hoy aprenderemos a gestionarlas como un profesional. Veremos cómo organizar los datos, buscar elementos y combinar listas.


🐍 Día 9: Métodos Avanzados de Listas

En este reto, aprenderás a manipular el orden y la estructura de tus listas.

El Código del Reto

Python
>>numeros = [45, 10, 88, 2, 10, 27]

>># 1. Ordenar la lista (Menor a Mayor)
>>numeros.sort()
>>print("Ordenada:", numeros) # [2, 10, 10, 27, 45, 88]

>># 2. Invertir el orden actual
>>numeros.reverse()
>>print("Invertida:", numeros) # [88, 45, 27, 10, 10, 2]

>># 3. Contar cuántas veces aparece un elemento
>>print("¿Cuántos '10' hay?:", numeros.count(10)) # 2

>># 4. Encontrar el índice (posición) de la primera aparición
>>print("Posición del 27:", numeros.index(27)) # 2

>># 5. Unir dos listas (Extend)
>>extras = [100, 200]
>>numeros.extend(extras) 
>>print("Lista extendida:", numeros) # [88, 45, 27, 10, 10, 2, 100, 200]
>>>
Ordenada: [2, 10, 10, 27, 45, 88]
Invertida: [88, 45, 27, 10, 10, 2]
¿Cuántos '10' hay?: 2
Posición del 27: 2
Lista extendida: [88, 45, 27, 10, 10, 2, 100, 200]

💡 ¿Qué estamos aprendiendo hoy?

  1. .sort() modifica la lista original: A diferencia de los métodos de strings que vimos el Día 6, .sort() cambia tu lista para siempre. Si quieres mantener la original, se usa una función diferente llamada sorted().

  2. .index() lanza error si no encuentra el dato: Si buscas la posición de un número que no está en la lista, el programa se detendrá con un error. Por eso es bueno usarlo con cuidado.

  3. .extend() vs .append():

    • .append([100, 200]) metería la lista completa dentro de la otra como un solo elemento: [..., [100, 200]].

    • .extend([100, 200]) desarma la segunda lista y añade cada número por separado: [..., 100, 200].


🚩 Un detalle de "Pro": Ordenar texto

El método .sort() también funciona con palabras. Las ordena alfabéticamente.

Python
nombres = ["Zoe", "Ana", "Pedro"]
nombres.sort()
print(nombres) # ['Ana', 'Pedro', 'Zoe']

¿Pasamos al Día 10?

El Día 10 es un hito importante porque cerramos la primera etapa del curso introduciendo las Tuplas. Son las "primas hermanas" de las listas, pero con una regla de oro: no se pueden cambiar.

¿Te gustaría ver por qué las Tuplas son tan importantes en Python o prefieres que hagamos un repaso de los métodos de listas?

365 Días de Python. día 7. Recorte de strings

 ¡El Día 7 es uno de los más divertidos y útiles! Aquí es donde aprendes a "rebanar" el texto para quedarte solo con la parte que te interesa. En Python, esto se conoce como Indexing (índices) y Slicing (rebanado).


🐍 Día 7: Indexación y Slicing (Recorte de Cadenas)

Imagina que una cadena de texto es una fila de cajas numeradas. En Python, la numeración siempre empieza en 0.

El Código del Reto

Python
lenguaje = "Python"

>># 1. Indexación (Acceder a un solo carácter)
>>print("Primera letra:", lenguaje[0])    # P
>>print("Cuarta letra:", lenguaje[3])     # h
>>print("Última letra:", lenguaje[-1])    # n (El -1 cuenta desde el final)

>># 2. Slicing (Extraer una porción de la cadena)
>># Sintaxis: [inicio : fin] -> El 'fin' no se incluye
>>print("Primeras tres:", lenguaje[0:3])  # Pyt
>>print("Desde la posición 2:", lenguaje[2:]) # thon
>>print("Hasta la posición 4:", lenguaje[:4]) # Pyth

>># 3. Slicing con Salto (Paso)
>># Sintaxis: [inicio : fin : paso]
>>print("Saltando de dos en dos:", lenguaje[::2]) # Pto

💡 ¿Qué estamos aprendiendo hoy?

  1. Índices Base-0: Es el error más común de los principiantes. La posición 1 es en realidad el segundo carácter.

  2. Índices Negativos: Python te permite contar hacia atrás. -1 es el último, -2 el penúltimo, etc. ¡Es súper útil para no tener que calcular el largo de la cadena!

  3. El Rango Exclusivo: En el slicing [0:3], Python toma los índices 0, 1 y 2, pero no el 3. Piensa en el segundo número como "detente antes de llegar aquí".

  4. Atajos:

    • [:4] significa "desde el principio hasta el 4".

    • [2:] significa "desde el 2 hasta el final".


🚩 Un truco de "Experto": Invertir una cadena

¿Sabías que puedes darle la vuelta a un texto completo con una sola línea de slicing?

Python
palabra = "Reconocer"
print(palabra[::-1]) # Resultado: "reconoceR"

El paso -1 le dice a Python que camine hacia atrás por toda la cadena.


¿Pasamos al Día 8?

En el Día 8, el reto suele introducir las Listas, que son como variables "supercargadas" que pueden guardar muchos elementos a la vez (como una lista de compras o un ranking de canciones).

¿Te gustaría explorar el Día 8 o prefieres un pequeño ejercicio de "rebanado" para dominar el Día 7?

martes, 16 de diciembre de 2025

Modificar listas en Python. pop() vs remove()

Cuales son las diferencias entre los métodos pop( ) y remove ( ) 

Fuente: Gemini

Ambos métodos, pop() y remove(), se utilizan para eliminar elementos de una lista en Python, pero lo hacen de maneras fundamentalmente diferentes:

Característicalist.pop(índice)list.remove(valor)
Criterio de EliminaciónElimina el elemento por su índice (posición).Elimina el elemento por su valor (contenido).
Valor de RetornoDevuelve el elemento que acaba de ser eliminado.Devuelve None (es decir, no devuelve nada).
Uso PrincipalQuitar un elemento en una posición específica, o el último elemento (por defecto), y usar ese elemento.Quitar la primera aparición de un valor específico.
Error si no existeLanza un error IndexError si el índice está fuera de rango.Lanza un error ValueError si el valor especificado no está en la lista.

1. list.pop(índice)

El método pop() se basa en la posición del elemento.

✅ Funcionamiento Clave

  1. Si no se especifica ningún índice, pop() elimina el último elemento de la lista (comportamiento de pila, LIFO - Last In, First Out).

  2. Si se proporciona un índice (p. ej., mi_lista.pop(2)), elimina el elemento en esa posición.

  3. Devuelve el elemento que ha sido eliminado. Esto lo hace útil para mover o procesar un elemento mientras se elimina de la lista original.

💡 Ejemplo:

>>frutas = ["manzana", "banana", "cereza", "dátil"]

>># 1. Eliminar por índice y obtener el valor
>>eliminado = frutas.pop(1)
>># Ahora: frutas = ["manzana", "cereza", "dátil"]
>># Ahora: eliminado = "banana"
>>print(f"Lista después de pop(1): {frutas}")
>>print(f"Elemento eliminado (pop): {eliminado}")

>># 2. Eliminar el último elemento (pop() sin argumento)
>>ultimo_eliminado = frutas.pop()
>># Ahora: frutas = ["manzana", "cereza"]
>># Ahora: ultimo_eliminado = "dátil"
>>print(f"Lista después de pop(): {frutas}")
>>print(f"Último elemento eliminado: {ultimo_eliminado}")

2. list.remove(valor)

El método remove() se basa en el valor del elemento.

✅ Funcionamiento Clave

  1. Busca el valor especificado dentro de la lista.

  2. Elimina la primera aparición de ese valor que encuentra. Si el valor aparece múltiples veces, solo se elimina la primera.

  3. No devuelve ningún valor (devuelve None).

💡 Ejemplo:

>>colores = ["rojo", "azul", "verde", "azul", "amarillo"]

>># 1. Eliminar por valor (la primera aparición)
>>colores.remove("azul")
>># Ahora: colores = ["rojo", "verde", "azul", "amarillo"]
>>print(f"Lista después de remove('azul'): {colores}")

>># 2. Intentar eliminar un valor que no existe provoca un error
>>try:
>>    colores.remove("naranja")
>>except ValueError as e:
>>    print(f"Error al intentar remove('naranja'): {e}")

🧐 ¿Cuándo usar cada uno?

  • Utiliza pop() cuando:

    • Necesitas eliminar el último elemento (comportamiento de pila/stack).

    • Conoces la posición (índice) del elemento a eliminar.

    • Necesitas guardar o usar el elemento que acabas de eliminar.

  • Utiliza remove() cuando:

    • Conoces el valor del elemento que quieres eliminar.

    • Solo quieres eliminar la primera ocurrencia de ese valor.

    • No te importa el valor del elemento eliminado.


Entradas recientes

Que es Claude y para que sirve?

**Claude** (se suele escribir *Claude*, no *Cloude*) es un sistema de inteligencia artificial conversacional desarrollado por la empresa **A...

Entradas Populares