Una guía completa sobre los conceptos de programación orientada a objetos en Python
Publicado: 2020-10-22La Programación Orientada a Objetos o POO ha sido una parte integral del mundo del software desde hace un tiempo. Es un excelente paradigma de programación que ofrece un cierto nivel de libertad y mejora los logros de programación para el desarrollador.
Hay ciertos conceptos y principios básicos que todo desarrollador debe conocer. Impulsan la premisa para desarrollar una aplicación utilizando este modelo.
Aquí, vamos a echar un vistazo a algunos de los conceptos cruciales pero básicos de programación orientada a objetos en Python . Estos conceptos impulsan a los programadores a lograr mejores resultados así como a modelar sus aplicaciones de manera enriquecedora.
Tabla de contenido
¿Qué es la programación orientada a objetos?
Para los no iniciados, aquí es donde vamos a comenzar nuestra inducción. Comprendamos los OOP como lo haría un laico, para obtener una comprensión más profunda de cómo podemos resolverlo.
En esta estructura de programación, puede combinar fácilmente cosas con propiedades o comportamientos similares en un solo objeto. Si está hablando de datos demográficos, entonces eso se convierte en un único objeto para este modelo de programación. De manera similar, si estás hablando de acciones a realizar, entonces eso se convierte en otro objeto.
Todos son objetos que contienen datos sin procesar. Su solución de software programará estos objetos de manera que cumplan el objetivo final juntos. Estos objetos realizarán algunas acciones juntos, según lo programado por usted, y entregarán el resultado.
Un excelente ejemplo para ayudar a entender esto sería un programa de correo electrónico.
Supongamos que tiene un objeto que contiene el contenido del correo electrónico, como el nombre del destinatario y el asunto. Hay un segundo objeto que detalla el archivo adjunto y el envío del correo electrónico. Diseñará un programa que combinará automáticamente estos objetos, se asegurará de que un correo electrónico completamente escrito esté listo con los archivos adjuntos deseados y se lo envíe al destinatario.
Así es como funciona la programación orientada a objetos. Sin embargo, algunos conceptos llevan esto a la acción. Echemos un vistazo rápido a estos conceptos y cómo funcionan.
Leer: ¿Python es un lenguaje orientado a objetos?
¿Cómo definir una clase?
La clase es lo que define cada objeto y es un aspecto importante de los conceptos de programación orientada a objetos en Python . Digamos que tienes cuatro objetos, como ojos, oídos, boca y nariz. Estas son partes de una cara, que es la clase.
Comencemos con cómo definir una clase.
Digamos que estás hablando de una clase llamada correo electrónico.
Correo electrónico de la clase:
pasar
Así es como se define la clase. Use el "pase" para que cuando ejecute el código en un compilador, no se emitan errores.
Solo definir la clase puede no ayudarte mucho. Debe agregar algunas propiedades para que sea atractivo y el código útil. Por lo tanto, debe agregar objetos a su clase.
El método ._init_() es lo que sería útil al definir las propiedades dentro de una clase.
Esto asegurará que cada vez que cree un nuevo objeto para la clase, este método establecerá los parámetros en el estado inicial, inicializando así un nuevo objeto cada vez.
El primer parámetro para este método siempre sería self, incluso cuando le asigne varios parámetros.
Entonces, ¿qué sucede en este caso? Digamos que creaste una nueva clase. La instancia se transfiere al parámetro self. Como resultado, ._init_() puede asignar nuevas propiedades al objeto definido.
Si todavía está pensando en cómo usarlo, entendámoslo a través de un ejemplo.
Correo electrónico de la clase:
def ._init_(yo, nombre, destinatario, dirección):
self.nombre = nombre
self.destinatario = destinatario
self.dirección = dirección
Desglosemos este código para una mejor comprensión.
La sangría expresada en el código anterior es fundamental. Debe hacer coincidir lo mismo al escribir su programa usando OOP en Python . Entendamos la variable self en el código anterior.
El self.name produce un atributo que se llama nombre. El valor del parámetro de nombre se asigna a este atributo. De manera similar, también se asignan atributos y valores para las variables del otro yo.
Estos atributos se conocen como instancia. Deberá especificar el valor de cada atributo mencionado dentro de una instancia en particular. Digamos que hay dos tipos de correos electrónicos: de bienvenida y de apoyo. El destinatario del correo electrónico sería diferente para ambas instancias (correos electrónicos de bienvenida y correos electrónicos de nutrición).
Los atributos de clase, por otro lado, son diferentes; contendrán el mismo valor para todas las instancias de clase. Por ejemplo, estos son todos los correos electrónicos entrantes. Este es el atributo de clase que puede definir para ellos.
Correo electrónico de la clase:
#Atributo de clase
Correo electrónico: "Correos electrónicos entrantes"

def ._init_(yo, nombre, destinatario, dirección):
self.nombre = nombre
self.destinatario = destinatario
self.dirección = dirección
Más información sobre: Cómo codificar, compilar y ejecutar proyectos Java
Comprender las variables de clase e instancia
Tomemos el ejemplo anterior donde hemos creado un atributo de clase, así como dos variables de instancia para comprender mejor los OOP en Python .
Correo electrónico de la clase:
Correo electrónico: "Correos electrónicos entrantes"
def ._init_(yo, nombre, destinatario, dirección):
self.nombre = nombre
self.destinatario = destinatario
self.dirección = dirección
Hablemos de instanciar los objetos dentro de esta clase. Debe establecer valores para cada uno de estos objetos. Este será el valor inicial para cada objeto, como se explicó en la parte anterior de la guía. En caso de que no asigne valores a estos objetos, recibirá un TypeError.
>>> Correo electrónico()
Rastreo (llamadas recientes más última):
Archivo “<pyshell#6>”, línea 1, en <módulo>
Correo electrónico ()
TypeError: __init__() faltan 4 argumentos posicionales: 'nombre', 'destinatario' y 'dirección'
Podemos agregar valor inmediatamente después del nombre de la clase.
Nutrir correo electrónico = Correo electrónico (Nutrir, David, [email protected])
Correo electrónico de bienvenida = Correo electrónico (Bienvenida, Daisy, [email protected])
Con el código anterior, hemos generado dos instancias, para un correo electrónico de crianza y un correo electrónico de bienvenida. Verifiquemos el __init__() definido después de la instancia de clase para el código anterior. Vemos cuatro parámetros, incluido uno mismo. Sin embargo, no se ha mencionado ninguna variable para sí mismo. Entendamos por qué?
Entonces, cada vez que crea un nuevo objeto dentro de una clase, está instanciando la clase. Estarás asignando una dirección de memoria mientras haces esto, donde se almacenará la variable. Tan pronto como cree una instancia de un nuevo objeto, Python creará automáticamente una instancia y se pasará a la primera variable en el método .__init__(). Como resultado, el yo se elimina en este método.
Con la variable de clase, puede asegurarse de que cada instancia que haya creado tenga una variable o un valor asociado. Esto asegurará resultados más rápidos y sencillos y, por lo tanto, conclusiones más seguras para su programación.
Lea también: Debe leer 47 preguntas y respuestas de la entrevista OOPS para principiantes y experimentados
Resumiendo
Hemos entendido los diversos aspectos de la creación de una clase, un objeto y un método utilizando el modelo de programación Python OOPs aquí. Aparte de esto, también hemos entendido conceptos como instancias e instanciación, que son fundamentales para la programación de programación orientada a objetos en Python. A continuación, deberá comprender los principios que rigen estas instancias y clases, como la herencia, el polimorfismo, la abstracción y la encapsulación. Son conceptos centrales de OOP en Python que impulsan su aplicación y sus resultados.
Para avanzar más en el embudo de Python, debe tener sus conceptos básicos claros y enraizados. Entonces, sumérgete en las clases y comprende cómo funciona. Juegue un poco con estas variables y comprenda sus resultados antes de que pueda configurar su aplicación.
Si tiene curiosidad por aprender ciencia de datos para estar al frente de los avances tecnológicos vertiginosos, consulte el Diploma PG en ciencia de datos de upGrad & IIIT-B y mejore sus habilidades para el futuro.
¿Por qué usamos OOP?
La programación orientada a objetos (POO) es un marco de programación que se basa en el desarrollo de "objetos" reutilizables con sus atributos y comportamiento sobre los que se puede actuar, manipular y empaquetar. Python es compatible tanto con programación orientada a objetos como con otros marcos. En Python, logras OOP usando clases. Python tiene todas las características habituales de la programación orientada a objetos. Los desarrolladores utilizan OOP en sus aplicaciones de Python porque hace que los códigos sean más reutilizables y facilita el trabajo con programas más grandes. Debido a que una clase solo se puede definir una vez y utilizar varias veces, los sistemas OOP evitan que se duplique el código. Como resultado, OOP hace que sea sencillo seguir el concepto 'Don't Repeat Yourself' (DRY).
¿Qué es una clase?
Una clase de Python es similar a un modelo para generar un nuevo objeto. Un objeto es cualquier cosa que desee modificar o cambiar mientras codifica. Cuando instanciamos un objeto de clase, lo que sucede cuando definimos una variable, se crea un nuevo objeto desde cero. Los objetos de clase se pueden reutilizar tantas veces como sea necesario. Se utiliza una clase para construir cada elemento. Considere esto como el modelo para cierto tipo de artículo. Las clases enumeran los atributos que se requieren para ese tipo de objeto, pero no les asignan un valor. Las clases también especifican métodos que son compartidos por todos los objetos del mismo tipo.
¿Qué es una variable de instancia?
Una instancia de clase posee variables de instancia en Python. El valor de una variable de instancia puede cambiar según la instancia con la que está vinculada. Esto es diferente de una variable de clase, que solo puede tener un valor asignado. Las variables de instancia se declaran dentro de un método de clase. Cuando declaramos una clase, podemos asignar valores a variables de instancia. Cuando declaramos la clase, proporcionamos los valores que deseamos asignar como argumentos.