Fundamentos de Programación y Python

1

Fundamentos de Programación con Python para Principiantes

2

Instalación y Uso Básico de Python en Windows y Mac

3

Semántica y Sintaxis en Programación Python

4

Práctica: Te doy la bienvenida a los ejercicios interactivos

5

Manejo de Cadenas y Operaciones Básicas en Python

6

Tipos de Datos en Python: Enteros, Flotantes y Booleanos

7

Dominio de la función `print` en Python: usos y formatos avanzados

8

Operaciones matemáticas avanzadas en Python: módulo, potencia y más

9

Entrada de información y manejo de tipos de datos en Python

Colección y Procesamiento de Datos en Python

10

Manipulación de Listas en Python: Creación, Indexación y Métodos Básicos

11

Copiar listas en Python sin compartir memoria con slicing

12

Manejo de Matrices y Tuplas en Python

13

Matrices en Juegos y Imágenes con Python

14

Diccionarios en Python: Uso y Manipulación de Datos

Control de Flujo en Python

15

Estructuras Condicionales en Programación: Uso de If, Else y Elif

16

Iteración y control de flujo con bucles en Python

17

Iteradores y Generadores en Python: Uso Eficiente de Memoria

18

Listas por comprensión en Python: creación y optimización de listas

Funciones y Manejo de Excepciones en Python

19

Funciones y Parámetros en Python: Crea una Calculadora Básica

20

Funciones Lambda en Python: Uso y Aplicaciones Prácticas

21

Recursividad en Python: Factoriales y Serie de Fibonacci

22

Manejo de Excepciones y Errores en Python

Programación Orientada a Objetos en Python

23

Programación Orientada a Objetos en Python: Clases y Métodos Básicos

24

Gestión de Biblioteca con Programación Orientada a Objetos

25

Herencia y Polimorfismo en Programación Orientada a Objetos

26

Programación Orientada a Objetos: Implementación de Clases y Herencia

27

Polimorfismo en Programación Orientada a Objetos

28

Herencia y Uso de la Función super() en Python

29

Programación Orientada a Objetos: Atributos, Métodos y `super()` en Python

Lectura y escritura de archivos

30

Manipulación de Archivos TXT y CSV en Python

31

Manipulación de archivos CSV con Python: lectura y escritura

32

Manejo de Archivos JSON en Python para Aplicaciones Web y APIs

Biblioteca estándar de Python

33

Uso Eficiente de la Biblioteca Estándar de Python

34

Uso de las librerías OS, Math y Random en Python

35

Análisis de Datos de Ventas con Python y Statistics

36

Desarrollo del juego Batalla Naval en Python

Conceptos avanzados de Python

37

Programación Avanzada en Python: POO, Excepciones y Proyectos

38

Escritura de Código Pytónico y Buenas Prácticas en Python

39

Comentarios y Docstrings: Buenas Prácticas en Programación

40

Tiempo de vida y alcance de variables en Python

41

Anotaciones de Tipo en Python para Código Más Legible

42

Validación de Tipos y Manejo de Excepciones en Python

43

Estructuras de Datos Avanzadas en Python: Collection y Enumeraciones

Decoradores

44

Decoradores en Python: Extiende Funcionalidades de Funciones

45

Uso de Decoradores Anidados y con Parámetros en Python

46

Decoradores en Programación Orientada a Objetos en Python

Métodos y estructura de clases en Python

47

Uso de Métodos Mágicos en Python

48

Sobrecarga de Operadores en Python: Personaliza Comportamiento de Clases

49

Ejecutar scripts Python con `if __name__ == '__main__'`

50

Metaprogramación en Python: Métodos `__new__` y `__init__`

51

Uso de *args y **kwargs en funciones de Python

52

Métodos y Atributos Privados y Protegidos en Python

53

Uso de Property en Python: Getter, Setter y Eliminación de Atributos

54

Métodos estáticos y de clase en Python

Programación concurrente y asíncrona

55

Concurrencia y Paralelismo en Python: Técnicas y Librerías Básicas

56

Concurrencia y Paralelismo en Python: `threading` y `multiprocessing`

57

Asincronismo en Python con AsyncIO y Corrutinas

58

Sincronía y Concurrencia en Python: Teoría y Práctica

Creación de módulos y paquetes

59

Módulos y Paquetes en Python: Reutilización y Organización de Código

60

Uso de Paquetes y Subpaquetes en Python con Visual Studio Code

61

Publicación de Paquetes Python en PyPI

Proyecto final

62

Sistema de Gestión de Reservas en Python Avanzado

63

Sistema de Gestión de Reservas en Python Avanzado

Curso de Python

Curso de Python

Carli Code

Carli Code

Programación Orientada a Objetos: Atributos, Métodos y `super()` en Python

29/63

Lectura

Para entender mejor la Programación Orientada a Objetos (POO), es esencial recordar los conceptos básicos de atributos y métodos.

...

Regístrate o inicia sesión para leer el resto del contenido.

Aportes 26

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Entendí mucho mejor la POO pero es verdad que para nosotros los novatos en estos temas estaría genial un video de introducción para que no nos perdamos tanto y evitemos la frustración al inicio de no entender nada.
### Resumen y Explicación #### Atributos y Métodos * **Atributos**: Son variables asociadas a una clase o a sus objetos que definen sus propiedades. Por ejemplo, una clase `Persona` podría tener atributos como `nombre`, `edad` y `dirección`. * **Métodos**: Son funciones definidas dentro de una clase que describen los comportamientos de los objetos de esa clase. Por ejemplo, en la clase `Persona`, podríamos tener métodos como `hablar`, `caminar` y `comer`. #### Uso de `super()` en Python La función `super()` permite acceder y llamar a métodos definidos en una superclase desde una subclase. Esto es útil para extender o modificar la funcionalidad de los métodos de la superclase sin repetir la implementación completa. #### Jerarquía de Clases y Constructores Cuando una clase hereda de otra, y esta a su vez hereda de otra clase, `super()` se utiliza para asegurar que todas las clases padre sean inicializadas correctamente. #### Métodos que Vienen por Defecto en Python Todas las clases en Python heredan de la clase base `object`, lo que proporciona ciertos métodos por defecto: * `__init__(self)`: Constructor de la clase, se llama al crear una nueva instancia y se utiliza para inicializar atributos. * `__str__(self)`: Devuelve una representación en cadena del objeto, usada por `print()` y `str()`. * `__repr__(self)`: Devuelve una representación “oficial” del objeto, usada por `repr()` y diseñada para ser precisa y útil para recrear el objeto. ### Importancia de Aprender estos Conceptos * **Extender Funcionalidades**: `super()` permite extender funcionalidades de la superclase sin duplicar código. * **Inicialización Correcta**: El uso adecuado de constructores garantiza que todos los atributos sean inicializados correctamente. * **Personalizar Representaciones**: Métodos como `__str__` y `__repr__` permiten personalizar la representación de los objetos, facilitando la depuración y manejo de datos. * **Comparar y Ordenar Objetos**: Métodos como `__eq__`, `__lt__`, etc., permiten definir cómo se comparan y ordenan los objetos, esencial para muchas operaciones de datos.
Esta parte necesita ser corregida, tiene muchas faltas ortograficas, por ejemplo en este parrafo ( al usar herencia vimos el método **init**() que es le cosntructor, el mismo es llamado automáticamente cuando se crea una nueva instancia de una clase y se utiliza para inicializar los atributos del objeto.)
Estoy muy atorado con esto, pude hacer los ejercicios, pero me cuesta mucho entenderlo y poder aplicarlo en otros casos más complejos.
La Programación Orientada a Objetos (POO) en Python es un paradigma de programación que organiza el código en clases y objetos. Este enfoque permite modelar el mundo real más fácilmente y escribir programas más modulares, reutilizables y escalables. Las clases son plantillas que permiten crear objetos, que son instancias de esas clases. Las clases pueden tener atributos (variables) y métodos (funciones.
me sorprendio lo de los metodos `__str__ y __repr__` eso faciliita mucho las cosas
**Conceptos clave:** * **Atributos:** Variables que describen las características de un objeto (ej: nombre, edad). * **Métodos:** Funciones que definen el comportamiento de un objeto (ej: hablar, caminar). * **Constructor (**`__init__`**):** Método especial llamado automáticamente al crear un objeto. Inicializa los atributos del objeto. * **Herencia y** `super()`**:** Permite que una clase (subclase) herede atributos y métodos de otra clase (superclase). `super()` se usa para llamar al constructor o métodos de la superclase desde la subclase, evitando la repetición de código. Es fundamental para construir jerarquías de clases donde las subclases añaden o modifican el comportamiento de las superclases. * **Métodos por defecto:** Python provee métodos predefinidos como `__str__` (representación en cadena para `print()`) y `__repr__` (representación "oficial" para depuración), que se pueden personalizar para controlar cómo se muestran los objetos. **En resumen:** La POO permite crear "objetos" que combinan datos (atributos) y funciones que operan sobre esos datos (métodos). La herencia facilita la creación de nuevas clases basadas en clases existentes, reutilizando código y extendiendo funcionalidades. Los constructores aseguran que los objetos se inicialicen correctamente, y los métodos especiales permiten personalizar la interacción con los objetos. Dominar estos conceptos es esencial para escribir código Python limpio, eficiente y reutilizable.
Veo que este curso está un poco loco. Esta clase no aparece en el indice de clases.
Muchas gracias por tan buena explicación , los ejercicios todo estuvo muy entendible . Súper. Ahora vamos a la práctica.
Los métodos `__eq__` y `__lt__` son métodos mágicos en Python que permiten definir el comportamiento de comparación de los objetos de una clase. - `__eq__(self, other)`: Este método se utiliza para comparar si dos objetos son iguales. Si se implementa, permite usar el operador `==` para comparar instancias de la clase. - `__lt__(self, other)`: Este método permite definir el comportamiento del operador `<` (menor que). Si se implementa, se puede utilizar para determinar si una instancia de la clase es menor que otra. Implementar estos métodos permite personalizar la forma en que se comparan los objetos en tu clase, facilitando su uso en estructuras de datos que dependen de comparación (como listas ordenadas).
Tengo una duda, super(), llama métodos y atributos o solo métodos ? En los ejercicios entendí que llamaba a los atributos pero acá dice que es a los métodos. Gracias
Me gusto mucho la explicación en texto, realmente sentí que aprendí muy bien en esta clase, aunque obviamente practicando ejercicios y otra vez volviendo a ver lo aprendido se aprende rápido
Buena explicación
Excelente explicación. Se me hizo muchísimo más fácil entender el concepto de POO en Python que cuando lo vi en Java en su momento. ¡Gracias! =)
Sí recién estas aprendiendo Programación Orientada a Objetos (POO) y te esta costando mucho trabajo entenderlo, no te preocupes, sigue avanzando. Es dificil entenderlo a la primera porque es un paradigma de programación osea un modelo. A mi me tomó tiempo entenderlo pero te aseguro que con la practica tu también lo entenderás...
Superando los Fundamentos de Programación Orientada a Objetos en Python: super() sirve para inicializar correctamente la herencia de clases padre que tienen otra clase padre (clase abuelo se podría decir)
De acuerdo con lo aprendido, es una forma digamos correcta de escribir código, siempre estableciendo las superclases que definen atributos y métodos mas generales, y utilizar super para agregar atributos y métodos de esas clases padre siempre que existan. Se ahorra tiempo y lineas de código. Muy buena esta clase.
Muchas gracias profe, por tu trabajo, excelente. Este aspecto de programación me llama mucho la atención, es de ciudado, pero hasta el momento con los ejemplos que has dado, me ha gustado mucho tu estilo.
**\_\_init\_\_** Inicializa los atributos del objeto. Se puede reutilizar con super() para inicializar también los atributos de la clase base. **\_\_str\_\_** Define una representación amigable del objeto (lo que aparece cuando lo imprimes). **\_\_repr\_\_** Define una representación más técnica del objeto, útil para depuración. **super()** Te permite reutilizar los métodos de la clase base, como **\_\_init\_\_, \_\_str\_\_, y \_\_repr\_\_,** haciendo que las clases hijas hereden y agreguen más comportamientos si es necesario.
Me parece que esta mal ejemplificado, una persona no tiene direccion, no esta dentro de sus caracteristicas como podria ser **Altura, Color de Pelo, Color de Ojos, Edad**, una persona si puede o no tener una direccion todo depende de las condiciones de esa persona ya que una **dirección** es una condición o estado externo que puede cambiar y no es una característica intrínseca. Asi que para mayor referencia con atributos y metodos: regresemos al ejemplo de los Coches **Atributo:** magina una clase **"Coche"**. Algunos atributos podrían ser **"color"**, **"marca"** y **"kilometraje"**. ### **Método** Un método es una función definida dentro de una clase que describe el comportamiento de un objeto. Los métodos realizan acciones o cambian el estado de un objeto. **Ejemplo:** Siguiendo con la clase **"Coche"**, un método podría ser **"arrancar"** o **"conducir"**.
Holaa 'Carli' Muchas Gracias pro la Explicacion Extra,\n Fue muy Bueno para entender lo que se ha dado hasta ahora en texto, Yo realmente l'Aprecio ,\n ahora si que entiendo mejor OOP en Python. \n
Excelente resumen! Tengo la memoria mas fresca sobre el tema, pero como siempre, es bueno indagar y recordar de vez en cuando para dominar el tema.
Como en este ejemplo que hemos definido el comportamiento de métodos como `__str__` y `__repr__` podemos hacer sobrecarga de operadores que es cuando definimos el comportamiento de operadores estándar. Por ejemplo si definimos un método `__add__` Python usa ese método para ejecutar una operación como: `person3 = person1 + person2` En esta tabla vemos algunos de los operadores que se pueden sobre-escribir ![](https://static.platzi.com/media/user_upload/image-3d641f08-675f-46c5-bd2c-585683d48fb0.jpg)
Está debió de ser la primera clase de POO, yo a veces confundo que es un argumento con objetos o que, si un objeto es un método, se me olvida que un método es una función, también no te queda claro porque usan self, etc. tengo una pregunta, Si por ejemplo la super clase Person tuviera no se 10 argumentos, por ejemplo, nombre, edad, teléfono, dirección correo etc. peor en la clase hija Student(Person) solo quiero llamar 2 o 3 atributos de lso 10 que tiene ¿Se puede? lo intenté haciendo, quitando age pero me marca un error TypeError ![](https://static.platzi.com/media/user_upload/image-b7c8ff0e-f614-4cd6-b18f-44744cbd2526.jpg)
### Hice uso de chat gpt y me parecio un mas entendible Qué es `super()`? `super()` es una función que te permite acceder a métodos y propiedades de una clase base desde una clase derivada. Esto es útil cuando quieres extender o modificar la funcionalidad de un método de la clase base en la clase derivada, sin necesidad de reescribir todo el código.
```python class Coche: # Constructor que inicializa los atributos del objeto def __init__(self, marca, modelo, año, color): # Atributos: características o propiedades del coche self.marca = marca # La marca del coche (ej. Toyota, Ford) self.modelo = modelo # El modelo específico (ej. Corolla, Mustang) self.año = año # El año de fabricación self.color = color # El color del coche self.velocidad = 0 # Velocidad actual, comienza en 0 self.encendido = False # Estado del motor, inicialmente apagado # Métodos: comportamientos o acciones que puede realizar el coche def encender(self): # Este método cambia el estado del coche a encendido if not self.encendido: self.encendido = True return f"El {self.marca} {self.modelo} ha sido encendido." else: return f"El coche ya está encendido." def apagar(self): # Este método cambia el estado del coche a apagado y detiene el coche if self.encendido: self.encendido = False self.velocidad = 0 return f"El {self.marca} {self.modelo} ha sido apagado." else: return f"El coche ya está apagado." def acelerar(self, incremento): # Este método aumenta la velocidad del coche si está encendido if self.encendido: self.velocidad += incremento return f"Acelerando a {self.velocidad} km/h." else: return f"No puedes acelerar, el coche está apagado." def frenar(self, decremento): # Este método reduce la velocidad del coche if self.velocidad >= decremento: self.velocidad -= decremento else: self.velocidad = 0 return f"Frenando. Velocidad actual: {self.velocidad} km/h." ```**Diferencias entre Atributos y Métodos:** 1. **Atributos**: * Son variables que almacenan datos/estado * Definen las características o propiedades del objeto * Se declaran generalmente en el constructor `__init__` * Se acceden con notación de punto (ej. `coche.marca`) * Representan el "qué es" o "cómo es" un objeto 2. **Métodos**: * Son funciones que realizan acciones * Definen los comportamientos que puede realizar el objeto * Contienen lógica y pueden modificar los atributos * Se invocan con paréntesis (ej. `coche.acelerar(20)`) * Representan el "qué hace" o "cómo actúa" un objeto