Clases y objetos de Python [con ejemplos]

Publicado: 2021-06-25

OOP, abreviatura de Programación Orientada a Objetos, es un paradigma que se basa en objetos y clases para crear programas funcionales. Los OOP trabajan en la modularidad del código, y las clases y los objetos ayudan a escribir piezas de código simples y reutilizables que se pueden usar para crear características y módulos de software más grandes. C ++, Java y Python son los tres lenguajes de programación orientados a objetos más utilizados. Sin embargo, cuando se trata de los casos de uso actuales, como la ciencia de datos y el análisis estadístico, Python supera a los otros dos.

Esto no es una sorpresa, ya que los científicos de datos de todo el mundo confían en las capacidades del lenguaje de programación Python. Si planea comenzar una carrera en Data Science y busca dominar Python, su primera prioridad debe ser conocer las clases y los objetos.

A través de este artículo, lo ayudaremos a comprender todos los matices detrás de los objetos y las clases en Python, junto con cómo puede comenzar a crear sus propias clases y trabajar con ellas.

Tabla de contenido

Clases en Python

Una clase en Python es un prototipo definido por el usuario con el que se crean objetos. En pocas palabras, una clase es un método para agrupar datos y funcionalidad . Es importante tener en cuenta las dos palabras clave. Los datos significan cualquier variable instanciada o definida, mientras que la funcionalidad significa cualquier operación que se pueda realizar en esos datos. Junto con los datos y la funcionalidad agrupados en un solo paquete, obtenemos clases.

Para comprender la necesidad de crear una clase, considere el siguiente ejemplo simple. Supongamos que desea realizar un seguimiento de los gatos de su vecindario que tienen diferentes características como edad, raza, color, peso, etc. Puede utilizar una lista y realizar un seguimiento de los elementos de forma 1:1, es decir, podría realizar un seguimiento de la raza al edad, o envejecer al peso usando una lista. ¿Qué pasa si se supone que hay 100 gatos diferentes? ¿Qué sucede si hay más propiedades para agregar? En tal escenario, el uso de listas tiende a ser desordenado y desorganizado.

¡Ahí es precisamente donde entran las clases!

Las clases lo ayudan a crear una estructura de datos definida por el usuario que tiene sus propios miembros de datos (variables) y funciones de miembro. Puede acceder a estas variables y métodos simplemente creando un objeto para la clase (hablaremos más sobre esto más adelante). Entonces, en cierto sentido, las clases son como un modelo para un objeto.

Además, la creación de clases crea automáticamente un nuevo tipo de objetos, lo que le permite crear más objetos del mismo tipo. Cada instancia de clase puede tener atributos adjuntos para mantener su estado. Las instancias de clase pueden tener métodos (según lo definido por su clase) para modificar el estado.

Algunos puntos en la clase de Python:

  • Las clases se crean utilizando la palabra clave class.
  • Los atributos son las variables que son específicas de la clase que creó.
  • Estos atributos son siempre de naturaleza pública y se puede acceder a ellos mediante el operador de punto después del nombre de la clase. Por ejemplo, ClassName.AttributeName obtendrá el detalle del atributo particular de esa clase en particular.

Sintaxis para definir una clase:

clase Nombre de clase:

# Declaración-1

.

.

.

# Declaración-N

Por ejemplo:

gato de clase:

pasar

En el ejemplo anterior, la palabra clave class indica que está creando una clase seguida del nombre de la clase (Cat en este caso). El rol de esta clase aún no ha sido definido.

Ventajas de usar Clases en Python

  • Las clases lo ayudan a mantener todos los diferentes tipos de datos debidamente organizados en un solo lugar. De esta manera, mantiene el código limpio y modular, mejorando la legibilidad de su código.
  • El uso de clases le permite aprovechar otro paradigma de programación orientada a objetos, llamado Herencia. Esto es cuando una clase hereda las propiedades de otra clase.
  • Las clases le permiten anular cualquier operador estándar.
  • Las clases hacen que su código sea reutilizable, lo que hace que su programa sea mucho más eficiente.

Objetos en Python

Un objeto es simplemente una instancia de cualquier clase que haya definido. En el momento en que creas una clase, ya se crea una instancia automática. Por lo tanto, como en el ejemplo, la clase Cat instancia automáticamente un objeto como un gato real, de raza persa y 3 años de edad. Puede tener muchos casos diferentes de gatos que tengan diferentes propiedades, pero para que tenga sentido, necesitará una clase como guía. De lo contrario, terminará sintiéndose perdido, sin saber qué información se necesita.

Un objeto se caracteriza en términos generales por tres cosas:

  • Estado: Esto se refiere a los diversos atributos de cualquier objeto y las diversas propiedades que puede mostrar.
  • Comportamiento: esto básicamente denota los métodos de ese objeto. También refleja cómo este objeto en particular interactúa o responde a otros objetos.
  • Identidad: la identidad es el nombre único del objeto mediante el cual se puede invocar cuando sea necesario.

1. Declaración de objetos

Declarar objetos también se conoce como instanciar una clase porque tan pronto como define una clase, se crea un objeto predeterminado en sí mismo (como vimos anteriormente), que es la instancia de esa clase. Del mismo modo, cada vez que crea un objeto, esencialmente está creando una nueva instancia de su clase.

En términos de las tres cosas (estado, comportamiento, identidad) que mencionamos anteriormente, todas las instancias (objetos) comparten comportamiento y estado, pero sus identidades son diferentes. Una sola clase puede tener cualquier número de objetos, según lo requiera el programador.

Mira el ejemplo a continuación. Aquí hay un programa que explica cómo instanciar clases.

gato de clase:

# Una clase sencilla

# atributo

attr1 = "felino"

attr2 = "gato"

# Un método de muestra

def divertido (uno mismo):

imprimir(“Soy un”, self.attr1)

imprimir(“Soy un”, self.attr2)

# código de conductor

# Instanciación de objetos

tom = gato()

# Accediendo a los atributos de clase

# y método a través de objetos

imprimir (Tom.attr1)

Tom.diversión();

El resultado de este sencillo programa será el siguiente:

Felino

soy un felino

soy un gato

Como puede ver, primero creamos una clase llamada cat y luego instanciamos un objeto con el nombre 'Tom'. Las tres salidas que obtuvimos fueron las siguientes:

  • Felino: este fue el resultado de la impresión de declaración (Tom.attr1). Dado que Tom es un objeto de la clase Cat y attr1 se ha establecido como Feline, esta función devuelve la salida Feline.
  • Soy un felino – Tom.fun(); usa el objeto llamado Tom para invocar una función en la clase cat, conocida como 'fun'. El objeto Tom trae consigo los atributos de la función y, por lo tanto, la función genera las siguientes dos oraciones: "Soy un felino".
  • Soy un gato, por la misma razón que se indicó anteriormente.

Ahora que comprende cómo funcionan las clases y los objetos en Python, veamos algunos métodos esenciales.

2. El método del yo

Todos los métodos definidos en cualquier clase deben tener un primer parámetro adicional en la definición de la función. Este parámetro no tiene asignado ningún valor por parte del programador. Sin embargo, cuando se llama al método, Python le proporciona un valor.

Como resultado, si define una función sin argumentos, técnicamente todavía tiene un argumento. Esto se llama 'auto' en Python. Para entender esto mejor, puede revisar sus conceptos de punteros en C++ o hacer referencia a ellos en Java. El método self funciona esencialmente de la misma manera.

Para entender esto mejor, cuando llamamos a cualquier método de un objeto, por ejemplo:

myObject.myMethod(arg1, arg2), Python lo convierte automáticamente en myClass.myMethod(myObject, arg1, arg2).

Como ves, el objeto mismo se convierte en el primer argumento del método. De esto se trata el yo en Python.

3. El método __init__

Este método es similar a los constructores en Java o C++. Al igual que los constructores, el método init se usa para inicializar el estado de un objeto. Este contiene una colección de instrucciones (sentencias) que se ejecutan en el momento de la creación del objeto. Cuando se crea una instancia de un objeto para una clase, el método init ejecutará automáticamente los métodos inicializados por usted.

Aquí hay un fragmento de código para explicarlo mejor:

# Una clase de muestra con método init

Persona de clase:

# método de inicio o constructor

def __init__(uno mismo, nombre):

self.nombre = nombre

# Método de muestra

def decir_hola(uno mismo):

print('Hola, mi nombre es', self.nombre)

p = Persona(“Sam”)

p.di_hola()

Producción:

Hola mi nombre es Sam

Aprenda cursos de análisis de datos en línea de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.

Variables de clase e instancia

Las variables de instancia son únicas para cada instancia, mientras que las variables de clase son para métodos y atributos compartidos por todas las instancias de una clase. En consecuencia, las variables de instancia son básicamente variables cuyo valor se asigna dentro de un constructor o un método con self. Por otro lado, las variables de clase son aquellas cuyos valores se asignan dentro de una clase.

Lea el siguiente código para comprender cómo se definen las variables de instancia mediante un constructor (método init):

gato de clase:

# Variable de clase

animal = 'gato'

# El método init o constructor

def __init__(uno mismo, raza, color):

# Instancia variable

self.breed = raza

self.color = color

# Objetos de la clase Perro

Tom = gato ("persa", "negro")

Nevado = gato ("Indie", "blanco")

print(“Detalles de Tom:')

print('Tom es un', Tom.animal)

print('Raza: ', Tom.raza)

imprimir('Color: ', Tom.color)

print('\nDetalles nevados:')

print(“Snowy es un', Snowy.animal)

print('Raza: ', Nevado.raza)

imprimir('Color: ', Nevado.color)

Si sigue el código anterior línea por línea, este es el resultado que recibirá:

Producción:

Detalles de tom:

tom es un gato

Raza: Persa

De color negro

Detalles nevados:

Nevado es un gato

Raza: Indie

Color blanco

En conclusión

Python es un lenguaje de programación comparativamente más fácil, especialmente para principiantes. Una vez que haya dominado los conceptos básicos, estará listo para trabajar con varias bibliotecas de Python y resolver problemas específicos de datos. Sin embargo, recuerda que si bien el viaje comienza con la comprensión de las clases y los objetos, también debes aprender a trabajar con diferentes objetos, clases y sus matices.

Esperamos que este artículo haya ayudado a aclarar tus dudas sobre clases y objetos en Python. Si tiene alguna pregunta, envíenos un comentario a continuación: ¡nos pondremos en contacto con usted muy pronto!

Si está buscando un cambio de carrera y está buscando ayuda profesional, upGrad está aquí para usted. Consulte nuestro programa Executive PG en ciencia de datos que se ofrece en colaboración con IIIT-B . Familiarícese con más de 14 lenguajes y herramientas de programación (incluido Python) y obtenga acceso a más de 30 proyectos relevantes para la industria. Los estudiantes de cualquier corriente pueden inscribirse en este programa, siempre que hayan obtenido un mínimo de 50% en su licenciatura.

Tenemos una sólida base de estudiantes de más de 85 países, más de 40 000 estudiantes pagados en todo el mundo y más de 500 000 profesionales felices que trabajan. Nuestra asistencia profesional de 360 ​​grados, combinada con la exposición del estudio y la lluvia de ideas con estudiantes globales, le permite aprovechar al máximo su experiencia de aprendizaje.

¿Qué son las clases y los objetos en Python?

Una clase es una plantilla o un modelo que une las propiedades y funciones de una entidad. En Python, la palabra clave class se usa para definir una clase. Todas las entidades u objetos que tienen atributos similares se pueden colocar en una sola clase y las funciones miembro pueden acceder a ellos.
Un objeto es una instancia de una clase. Una vez que se crea una clase, los objetos obtienen toda la información de esa clase. Es como una copia de la clase respetada con los valores reales. Un objeto se clasifica por tres factores:
un. Estado
B. Conducta
C. Identidad

¿Qué paradigma de programación sigue Python?

Hay cuatro paradigmas distinguibles principales seguidos de Python: orientado a objetos, procedimental, funcional e imperativo. Python apoya fuertemente los conceptos orientados a objetos; sin embargo, no es un lenguaje de programación puramente orientado a objetos.
La razón para soportar varios paradigmas de programación es que está notablemente influenciado por algunos scripts como CoffeeScript y lenguajes de programación orientados a objetos como Ruby. También se combina con lenguajes como R para aumentar la eficiencia y el poder computacional.
Al ser un lenguaje multiparadigma, se cree que Python es uno de los lenguajes más versátiles. Es ampliamente utilizado para desarrollo, análisis de datos, web scraping y automatización.

¿Qué son los modificadores de acceso en Python?

Similar a otros lenguajes de programación orientados a objetos, una clase en Python también tiene tres modificadores de acceso:
un. Modificador de acceso público : cualquier función puede acceder directamente a los miembros de la clase especificados como públicos, es decir, funciones de miembros y funciones de no miembros. Si no se especifica ningún especificador de acceso, el compilador considera que todos los miembros de la clase son miembros públicos de forma predeterminada.
B. Modificador de acceso privado : estos miembros de la clase están ocultos para otros miembros de la clase. Solo pueden acceder a ellas las funciones miembro de la clase en la que están definidas.
C. Modificador de acceso protegido : solo las funciones miembro de la misma clase pueden acceder a los miembros de la clase que se especifican como protegidos y arrojarán un error si se intenta acceder fuera de la clase. La única diferencia importante entre el especificador de acceso privado y protegido es que los miembros protegidos se pueden heredar mientras que los miembros privados no se pueden heredar.