Python 101: programación orientada a objetos | Naser Jamal | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Python 101: programación orientada a objetos

teacher avatar Naser Jamal, Computer Engineer

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción de programación orientada a objetos

      0:37

    • 2.

      Clases y objetos

      7:56

    • 3.

      Herencia

      9:32

    • 4.

      Métodos estáticos, métodos de clase, atributos de clase

      6:09

    • 5.

      Cómo importar clases

      2:54

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

133

Estudiantes

--

Proyectos

Acerca de esta clase

En esta clase de Python, aprenderemos todo sobre programación orientada a objetos (OOP) en Python.

OOP no es tan difícil de dominar como parece al principio, así que ¡abróchate para un viaje de aprendizaje práctico al 100%!

QUÉ APRENDERÁS

  • Los principios de la programación orientada a objetos (OOP) usando Python.
  • Cómo funcionan los elementos de la programación orientada a objetos
  • Cómo funcionan las clases y cómo puedes crear instancias de clases.
  • Cómo implementar y llamar Comprende su propósito dentro de las clases.
  • Definir atributos de instancia y atributos de clase. Aprende sus diferencias.
  • Usa 'yo mismo' para referirse a instancias. Aprende cómo funciona detrás de escenas.
  • Cómo trabajar con herencias para reutilizar el código, mejorar el diseño y evitar la repetición.

¿Por qué vas a tomar esta clase?

  • ¿Quieres poder estructurar tu código y hacerlo más reutilizable?
  • ¿Quieres aumentar tus habilidades de programación de Python sin pasar demasiado tiempo?
  • ¿Alguna vez te han confundido el tema de programación orientada a objetos y quieres una guía detallada de aprendizaje paso a paso?

 

Contenido y resumen

Con conferencias de video de alta calidad, aprenderás y trabajarás con estos conceptos:

  • Clases
  • Instancias
  • Atributos de instancia
  • Atributos de clase
  • Métodos
  • El parámetro "self"
  • Herencia
  • .... ¡y más!

Requisitos

  • No se requieren conocimientos de programación.
  • No necesitas instalar python, puedes usar compiladores en línea de Python.
  • Sistema operativo Windows / Linux / MacOS.

Conoce a tu profesor(a)

Teacher Profile Image

Naser Jamal

Computer Engineer

Profesor(a)

Hello, I'm Naser.

I try to simplify complicated programming topics and present them into short and bite-sized videos!

Ver perfil completo

Habilidades relacionadas

Desarrollo Lenguajes de programación Python
Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introducción a la programación orientada a los objetos: Bienvenido a la programación completa orientada a objetos en la masterclass de Python. Si estás aprendiendo Python y querías llevar tus habilidades de programación al siguiente nivel. Y esta clase es para ti. No necesitas ningún conocimiento previo para empezar. Entonces, ¿para qué se utiliza la programación orientada a objetos? Podrías preguntar, OOP se utiliza en informática para implementar estructuras de datos. También se utiliza en el desarrollo web, bases de datos, ciencia de datos, inteligencia artificial, desarrollo de juegos, interfaces gráficas de usuario, y mucho más. En esta clase, aprenderás todos los fundamentos de la programación orientada a objetos en Python y los aplicarás para construir aplicaciones. Así que empecemos. ¿Deberíamos? 2. Clases y objetos: Hola y bienvenidos de nuevo a mi video. Hoy estaremos echando un vistazo a la programación orientada a objetos en Python, o en otras palabras, o p. Con programación orientada a objetos, podrás hacer tus propias clases personalizadas que se adapten a tus necesidades y usar esas clases a través de objetos. Entonces, ¿qué es realmente un objeto? Te sorprenderá que puedas estar usando objetos en el día a día sin saberlo. Entonces aquí hay un ejemplo de objetos que estamos utilizando en el diario si imprimimos el tipo de un entero, por ejemplo, esto es lo que vamos a conseguir. Como se puede ver, dice entero de clase. Entonces este número que escribimos aquí es un objeto de la clase y similar a una cadena. La palabra matemática aquí es un objeto de la cadena de clase. Del mismo modo, cuando creamos una función, realmente solo estamos creando un objeto de esa clase original llamada función, por ejemplo. Por lo que ahora establecimos que la mayoría de las cosas que usamos en Python son objetos de su propia clase. Así que aprendamos a crear nuestras propias clases con sus propias funcionalidades. Entonces vamos a crear una clase y su forma más simple. Siempre se recomienda capitalizar la primera letra en el nombre de nuestra clase, que en este caso es cat. Si queremos usar esta clase, tenemos que crear un objeto de esta clase. Entonces c1 es el nombre del objeto y está llamando a la clase Cat. Y sentémonos en él y veamos cómo se ve. Esta clase de gato casi no hace nada además de imprimir. Soy un gato, que en realidad no es tan útil. Esperamos que nuestra clase tome nombres, edades de los usuarios hacen cosas, etcétera. Es por ello que el método init entra en juego. Todas las clases tienen un método llamado init, que siempre se ejecuta cuando se inicia la clase. Vamos a utilizar el método net para asignar atributos u otras operaciones que sean necesarias para hacer cuando se está creando el objeto. Por ejemplo, si quisiera crear una clase de persona, quería tomar valores como el nombre y la edad. Por lo que definimos a una persona de clase con nombre. Ahora definimos el método neto. Como se puede ver, es tan predeterminado en las clases que python escribe automáticamente todo el asunto. Para mí, el argumento self es una referencia a la instancia actual de la clase y se usa para acceder a variables de clase. Ahora, agreguemos argumentos a nuestra clase. Ahora, utilicemos nuestra clase creando un objeto. Como se puede ver cuando pongo el cursor sobre los paréntesis, dice parámetro, edad y nombre no se llenan. Entonces vamos a llenarlos respectivamente. Recuerda, es muy necesario escribir auto dot antes de asignar a nuestras variables nombre y borde. Ahora vamos a añadir otro método a nuestra clase, el método que imprime detalles sobre la persona. Ahora que hemos definido P1, P2, y P3 para ser un objeto de nuestra clase. Pueden usar su método, obtener detalles. Entonces, ¿qué pasa si creamos un forth antes sin asignar esas variables requeridas como nombre y borde, vamos a obtener un error diciendo que faltan los dos argumentos requeridos. Entonces podrías estar preguntando, ¿por qué el método init es tan especial? ¿ Por qué tenemos que definirlo por defecto cada vez que creamos una clase? Porque por naturaleza, cuando escribimos P es igual a persona, estamos esperando llenar los detalles ahí inmediato y luego usar cualquier método de la clase. Por ejemplo, si comentamos y ello, lo que básicamente lo hace ahora invisible a nuestro programa, como se pueden ver los ahora para convertir un argumento inesperado. Por lo que ahora tenemos que crear un método completo que tome entradas del usuario. Entonces por ejemplo, ahora tendremos que eliminar los argumentos e insertarlos a través del método insert details. Ahora podemos usar el método get details. Entonces no sólo esto es confuso para el usuario en todos los que están lidiando con este código. También lleva mucho tiempo. Y en todo caso, se suponía que las clases debían hacer era acortar el tiempo necesario para hacer las cosas. Entonces, ¿es necesario el método neto? En realidad no, la clase funciona bien sin ella, pero seguro que ayuda mucho. Entonces este es el código sin el método net, y este es el código entonces agregaría método. Entonces para recapitular, creamos la clase llamada Persona y le dimos los siguientes atributos, nombre y edad. Definimos métodos en nuestra clase para darle algunas funcionalidades, como obtener detalles. Y luego creamos objetos de esta clase llamados V1, V2, V3, y rellenamos los parámetros necesarios y usamos el método get details. Así que probemos otro ejemplo. Digamos por ejemplo, creamos una clase de perro y gato, ¿ o toman nombre y edad? Entonces vamos a quitárselos. Obviamente, podemos crear un objeto a partir de estas clases. Si notas ambas clases son casi idénticas, con la única diferencia es que imprimen diferentes cadenas. Entonces tuvimos que escribirlo dos veces cuando pudimos haber escrito una clase general de padres que incluyera la información genética de cada animal, por ejemplo. Pero, ¿cómo vinculamos estas clases? Podrías preguntar, ¿cómo permites que las clases de gatos y perros hereden atributos del animal de clase más general simplemente abriendo paréntesis y escribiendo la clase de balance que vamos a agregar, en este caso animal. Ahora tanto las clases de gato como de perro han heredado el método init del animal de clase padre, y ya no necesitamos especificarlo cada vez. Entonces vamos a seguir adelante y quitárselos. Ahora. Vamos a usar nuestros métodos y asegurarnos de que estén funcionando bien. Por lo que no sólo hicimos nuestro código más corto sin dejar de mantener las mismas características, sino que ahora podemos agregar métodos que se aplican tanto a clases de gato como de perro sin tener que agregarlos a gato y perro específicamente, por ejemplo. Ahora vamos a usar este método, cat por ejemplo. Oh, se me olvidó añadir una t aquí. A pesar de que no definimos este método en la clase de gato, gato aún hereda esos métodos de su animal de clase padre. Entonces eso es todo por lo básico. El siguiente video estaremos echando un vistazo más de cerca sobre herencia y los diferentes tipos de la misma. Entonces eso es todo para el video de hoy. Muchas gracias por mirarte y espero verte en la siguiente. 3. Herencia: Hola y bienvenidos de nuevo a mi video. Hoy estaremos echando un vistazo a tipos de herencia y programación orientada a objetos en Python. Entonces, ¿por qué la herencia es útil y biofilm, representa con precisión las relaciones del mundo real. Permite la reutilización del código. No tenemos que reescribir el mismo código una y otra vez. Nos permite añadir nuevas características a nuestra clase sin tener que alterarla. Es de naturaleza transitiva, lo que implica que si clase B hereda de otra clase a, entonces todas estas subclases heredarán automáticamente de la clase a. con eso en mente, vamos a echar un vistazo a diferentes tipos de herencia, empezando por herencia única. Así digamos por ejemplo, quería crear una clase country que representara a Canadá. Tendría una clase de padres llamada Canadá. Ahora vamos a crear una clase infantil que hereda de Canadá llamada Ottawa. Dado que Ottawa es una ciudad y parte de Canadá, cualquier característica que se agregue a Canadá debe aplicarse automáticamente al auto. Ahora voy a crear un objeto de la clase infantil Ottawa y utilizar su método ciudad. Desde Auto como clase infantil de Canadá, también puedo usar su método nombre de país sin tener que definirlo dentro de O2. Entonces, por ejemplo, el segundo tipo es herencia múltiple. Y herencia múltiple, las características de todas las clases base se heredan en la clase derivada. Entonces vamos a crear dos clases de padres, madre y padre. Ahora vamos a crear un clúster hijo heredar de estas dos clases. Ahora, vamos a crear un objeto a partir de sol de clase y usar entidades de su clase padre. Como se puede ver, pudimos usar nombre del padre y el nombre de la madre, pesar de que no estaban definidos en nuestro sol de clase. Y eso es porque heredamos esos nombres de las dos clases, madre y padre. El tercer tipo es herencia multinivel. Hereda tanto la clase base como las entidades de clase derivadas a la clase recién derivada. Entonces veamos un ejemplo. Aviso en ambas clases child invocamos al constructor de la clase padre. Ahora, vamos a crear objetos de nuestras clases y empezar a utilizarlo. Entonces la razón por la que pasamos tres parámetros es porque la clase del sol toma tres nombres. Como se puede ver, el código funciona muy bien. Entonces, ¿qué pasa si quitamos invocando al constructor de la clase Abuelo? Como se puede ver, el código se rompe. El cuarto tipo es herencia jerárquica. Es una situación en la que la clase equilibrada es heredada por múltiples subclases. Ahora tenemos un vaso de barones con dos clases infantiles. Recuerde, esas dos clases derivadas pueden usar las funciones y características de la clase de sus padres. No obstante, el niño uno no puede usar funciones del canal dos. Hasta ahora tan bueno. Pueden usar las características de clase de los padres y sus propias características. No obstante, en el momento en que tratamos de usar una función del niño uno y niño dos, vamos a obtener un error. Y por último, el quinto tipo, herencia híbrida. En este tipo las características de más de un tiempo de herencia se mezclan para formar herencia híbrida. Entonces veamos un ejemplo. Ahora vamos a crear objetos de nuestras clases. Por último, veamos cómo podríamos juntar todo esto y crear un programa de calculadora usando funciones de programación orientadas a objetos, declaraciones f, y loops while. Primero, vamos a crear una clase de calculadora para incluir todas nuestras operaciones matemáticas. Ahora necesitaremos crear un objeto para nuestra clase Calculadora para que podamos empezar a usarlo. Ahora vamos a crear un bucle while y configurarlo en true y pedirle al usuario que ingrese su operación matemática deseada. La ventaja de usar el bucle while aquí es que este programa seguirá funcionando a menos que el usuario elija cinco, que en este caso tendremos que hacer una declaración F diciendo que la opción F es igual a cinco, luego romper, que romperá el bucle. De todos modos, continuemos con nuestro programa y creemos una lógica para ello usando declaraciones f. Esto asegurará que el usuario haya introducido una elección válida. En primer lugar, vamos a comprobar si el usuario quiere salir o no. Si no, entonces vamos a pedir la entrada del usuario para seguir adelante con los cálculos. Ahora vamos a crear una declaración F LF para que coincida con su elección. Empecemos con agregar nuestro programa y ver cómo se ve. Después presionamos F5, debe salir. Pero nuestro programa aún no es perfecto. Si el usuario ingresó la cadena obtendrá un error de valor porque esposa y no pudo convertir una cadena en un entero. Entonces pongamos nuestras habilidades de manejo de excepciones para usar y tratar con este adulto. Como se puede ver, esto funciona manejando nuestro error, pero no vuelve a ejecutar el programa para nosotros. Para eso, simplemente podemos copiar pegar el código bajo el bloque excepto para que cuando se ejecute también ejecute nuestro código. Ahora por supuesto, hay fallas en este método. Por ejemplo, si el usuario ingresa una cadena en otra ocasión obtendrá un error porque esperamos que maneje la celda solo una vez. Aquí es donde entra en juego el reintento, pero no queremos desviar demasiado el video. Entonces acabamos de armar con esto. En conclusión, realmente no necesitas estar limitado por un estilo determinado y escrito a mano tanto como deberías enfocarte en mantener tu código estructurado. Lo que significa que debes seguir tu propia estructura que se adapte a tus propias necesidades. Entonces eso es todo para el video de hoy. Muchas gracias por mirarte y espero verte en la siguiente. 4. Métodos estáticos, métodos de clase, atributos de clase: Hola y bienvenidos de nuevo a mi video. Hoy vamos a echar un vistazo a métodos estáticos, métodos clase y atributos, comenzando con atributos de clase. Entonces, ¿qué son los atributos de clase? Un atributo de clase es una variable que pertenece a una clase en lugar de un objeto en particular. Entonces tomemos un ejemplo. Por lo que ahora hemos creado una simple clase animal entonces initará método en el que se pasa el nombre del animal. Entonces vamos a crear una instancia de esa clase. Podrías estar preguntando, ¿cuál es esta variable por aquí, número de animales? Bueno, este es un atributo de clase. Y de inmediato lo que lo hace un atributo de clase es que no se usa a sí mismo como nombre. Entonces, ¿cuál es la diferencia entre esta clase, atributo, número de animales y algo así como nombre, por ejemplo, un nombre cambia de instancia a instancia. Por ejemplo, A1 tendrá un nombre diferente al A2. No obstante, tanto A1 como A2 tendrán el mismo número de animales, num de animales. No depende de una instancia. Entonces por ejemplo, tanto es así que pude derivar el animal, que los animales, y todavía obtendría los mismos resultados. Lo que significa que puedo acceder a este atributo de clase desde la propia clase sin tener que crear una instancia como esta por aquí. Entonces ahora que hemos establecido que número de animales es un atributo de clase que aplica para toda la clase. ¿ Qué podemos hacer con ella? En primer lugar, podemos hacer un seguimiento de cuántas instancias de nuestro animal de clase se ha creado por orden, es decir, cuántos animales tenemos. Entonces, por ejemplo, note que usamos animal no-yo, lo contrario, nos habría dado resultados diferentes. Entonces esa es la idea básica detrás de los atributos de clase. Hay algunos usuarios para ellos, por supuesto, como poder definir una constante que se desea utilizar para cualquier instancia de esa clase. Entonces, por ejemplo, tenías una clase de física con Lightspeed obviamente siendo una constante. En lugar de definirlo fuera de tu clase como una variable global. En cambio, puedes definirlo dentro de tu clase como un atributo de clase para que puedas acceder a ella más fácilmente. Entonces, ¿por qué es esto un mejor enfoque? Siempre queremos asegurarnos de que tus clases sean lo más independientes posible. significa que si fueras a usar esta clase en algún otro lugar en algún momento del tiempo, tiene todos sus métodos y variables predefinidos en su interior y listas para ser usadas en otro lugar. Entonces así es como puedes usar atributos de clase a tu ventaja creando cualquier variable que puedas necesitar dentro de la clase, en lugar de crearla fuera como una variable global. Ahora hablemos de métodos de clase. Entonces recuerda cómo incrementamos num de animales por aquí. Cada vez que se creó una instancia del animal de clase, podemos hacerlo un poco definitivamente usando el método de clase. Así que vamos a crear un método de clase y ver cómo se ve. Como se puede ver, usamos TLS en lugar de auto. Ahora vamos a devolver el número de animales. Lo que también tenemos que hacer es usar un decorador de clase para denotar que este es en efecto un método de clase. Por lo que ahora hemos creado un método de clase que devuelve el número de animales. Necesitamos un método de clase que agregue más uno una vez que se crea un animal o una instancia. Así que vamos a crear otro método de clase. Entonces, ¿cómo podemos usar el método de clase Add animals? Por ejemplo, podemos quitar animal ese número de animales de nuestro método init y reemplazarlo por animales de anuncios. Ahora lo que esto hará es que llamará al método de clase agregar animales cada vez. Y fue llamado, es decir, cada vez que una instancia del animal de clase ha creado como A1, A2, utilizará el método de clase y los animales. Entonces veamos si esto funciona usando el método de clase num animals, debe volver a. Entonces eso fueron métodos de clase. Echemos un vistazo a los métodos estáticos. Estas son algunas de las características de los métodos estáticos. En primer lugar, está ligado a la clase. No puede modificar un estado de clase u objeto, y no puede acceder ni modificar la clase y sus variables de instancia. Así que a veces cuando estamos creando un programa de calculadora, tendemos a definir métodos como si pudieras definir esos métodos dentro de una clase y tenerlos como métodos estáticos. Entonces por ejemplo, ahora podemos usar el decorador de clase para denotar que este es un método estático. Para usar esos métodos, en lugar de crear una instancia de la calculadora de clases, podríamos acceder a ellos de inmediato usando calculadora. Entonces para esos métodos, no tengo que crear una instancia de la calculadora de clase como esta. Y luego usa C1. Oh, lo siento. Simplemente podría usar la calculadora inmediato sin tener que crear una instancia. Estoy de acuerdo en que algunos podrían decir, Bueno, podrías haber definido esos métodos a nivel mundial y haber usado anuncio de inmediato en lugar de calculadora, como por ejemplo. Hay algunas complicaciones a la misma. Y es principalmente para mantener tu código más estructurado y organizado. Entonces eso es todo para el video de hoy. Muchas gracias por mirarte y espero verte en la siguiente. 5. Importar clases: Hola y bienvenidos de nuevo a mi video. Hoy estaremos echando un vistazo a diferentes métodos. Puedes importar clases hasta el programa, comenzando con el método más sencillo en el que el archivo o clase que estás importando está dentro tu espacio de trabajo o directorio. Entonces aquí tenemos dos archivos Python, hombres y test. Ambos están en el mismo directorio. Entonces tenemos una clase, una prueba ese pastel que queremos usar en main.py. Para que como se puede ver, test.py tiene una clase llamada calculadora y queremos importarlo. Y para comprar, para hacer eso, haremos lo siguiente. En primer lugar, vamos a importar el nombre del fichero. En este caso, es prueba. Entonces sigamos adelante y abortemos la prueba. Entonces para usar la clase, igual que cualquier otra clase, tendrás que crear una instancia de un objeto de esa clase. Entonces vamos a crear una instancia de prueba. Como se puede ver cuando escribo dot, me muestra que hay una clase llamada calculadora que debo elegir para empezar a usarla. Entonces escojamos calculadora. Ahora, al igual que cualquier instancia, podemos seguir adelante y usar sus métodos y atributos. Como se puede ver, funciona muy bien. Aviso Tuve que escribir el nombre del archivo que es prueba, y luego elegir una cierta clase dentro de ese archivo, que tiene calculadora. Eso significa que podría tener múltiples clases dentro del archivo de prueba que podría elegir. Por ejemplo. Ahora vamos a usar la clase de física. Entonces eso es asumir que la clase que estamos importando está dentro de nuestro directorio. ¿ Qué pasa si quiero importar un archivo en clase en mi escritorio, por ejemplo. Para ello, primero importaremos el éxito. Entonces vamos a escribir CIS dot path. Entonces escribiremos la ubicación del archivo que vamos a importar. Podemos conocer la ubicación de la phi dirigiéndose al propio archivo. Haga clic con el botón derecho y luego haga clic en Propiedades Ahora vamos a importar el archivo en sí, que es archivo de prueba. Ahora para empezar a usarlo al igual que cualquier clase necesitamos crear una instancia de la misma. Así que importé la clase matemática y uso el método add para saber qué clase y métodos tenemos en nuestro archivo. Simplemente podemos abrirlo usando el Bloc de notas. Entonces lo que hicimos es importante. El archivo de prueba final luego creó una instancia de la clase matemática a través del archivo de prueba. Entonces usamos el método add dentro de esa clase. Entonces eso es todo para el video de hoy. Muchas gracias por mirarte y espero verte en la siguiente.