POO: Clases y objetos en Python

Publicado por Andrea Navarro el

En este artículo veremos los conceptos básicos relacionados con la programación orientada a objetos en Python. Veremos como crear clases e instanciar objetos. Veremos también como definir atributos, métodos y constructores en nuestras clases.

Con este artículo iniciamos una nueva serie de posts! Esta vez, sobre programación orientada a objetos (POO) en Python.

Clase

Una clase es una plantilla o molde que define características comunes de un conjunto de objetos que existirán durante la ejecución de un programa. Estas características especifican que datos tendrán asociados estos objetos llamados atributos y que acciones podrán realizar denominados métodos.

Por ejemplo, podría utilizarse una clase que represente a los usuarios de una aplicación. Todos tendrán los mismos datos (nombre, apellido, mail, última sesión, etc) aunque los valores sean diferentes para cada uno.

Todos los usuarios podrán también realizar las mismas acciones (login, logout, cambiar contraseña, etc).

Para crear una clase se utiliza class seguido del nombre de la clase y finalizando con dos puntos. Por convención las clases comienzan sus nombres en mayúsculas. Dentro la clase definirá sus atributos y métodos.

class Usuario:
    # Atributos y métodos de la clase

Objeto

Un objeto es una instancia concreta de una clase por lo cuál también puede verse descrito como instancia. A diferencia de la plantilla abstracta que es la clase el objeto es un caso real y concreto que tiene su propio estado, sus atributos pueden cargar sus valores y es capaz de ejecutar los métodos definidos en su clase.

Siguiendo el ejemplo anterior, un usuario del sistema en específico será un objeto de la clase Usuario. Tendrá su nombre, apellido, mail y otros valores cargados, y al realizar acciones como iniciar sesión se ejecutará el método de la clase Usuario utilizando valores del objeto como el nombre de usuario y contraseña para validar, y se actualizarán valores del objeto como última sesión.

Para crear un objeto se llama a la clase correspondiente y se almacena su resultado en una variable.

usuario_comun = Usuario()
admin = Usuario()

Una clase puede generar o instanciar muchos objetos. Aunque estos objetos tengan la misma estructura de clases y métodos serán diferentes entre sí.

📚 ¿Querés aprender a crear webs dinámicas con Python usando Flask?
Sumate a nuestro curso!

Atributos y métodos

Métodos

Los métodos son funciones que pertenecen a una clase u objeto. Se utilizan para describir el comportamiento que tendrán los objetos.

Se definen dentro de la clase de la misma forma en la que se definen las funciones en Python. Estás funciones pueden tener argumentos, retorno, etc.

class Usuario:
    def iniciar_sesion():
        #Implementación función inicio sesión
    def cerrar_sesion():
        #Implementación función cierre sesión
    def publicar_comentario(post_id, comentario):
        #Implementación función publicación comentario

Es posible ejecutar los métodos de un objeto referenciándolos separando el nombre del objeto y el método con un punto.

usuario_comun = Usuario()
usuario_comun.cerrar_sesion()
usuario_comun.publicar_comentario(2322, "Buen artículo")

Existe un método especial de la clase llamado constructor. Este método se ejecuta automáticamente cada vez que se instancia un nuevo objeto de la clase. Su función principal es inicializar los atributos del objeto. Se define como un método llamado __init__.

class Usuario:
    def __init__(self, nombre, apellido, usuario):
        #Inicialización de atributos
        self.nombre = nombre
        self.apellido = apellido
        self.usuario = usuario
    def iniciar_sesion():
        #Implementación función inicio sesión
    def cerrar_sesion():
        #Implementación función cierre sesión
    def publicar_comentario(post_id, comentario):
        #Implementación función publicación comentario

La palabra self hace referencia al mismo objeto por lo que será utilizado cuando se quiera hacer referencia a los atributos y métodos dentro de la misma clase. El método de constructor permite cargar los valores de los atributos al crear el objeto en la misma línea.

usuario_comun = Usuario("Pedro", "Gonzales", "pgonzales")

Atributos

Los atributos son variables que pertenecen a una clase u objeto. Se utilizar para almacenar información y establecer el estado de un objeto. Como Python no requiere definir las variables antes de utilizarlas, la mayor parte de los atributos se definen en el constructor, sin embargo es posible definir otras variables dándoles un valor inicial.

class Usuario:
       activo = True
    def __init__(self, nombre, apellido, usuario):
        #Inicialización de atributos
        self.nombre = nombre
        self.apellido = apellido
        self.usuario = usuario
    def iniciar_sesion():
        #Implementación función inicio sesión
    def cerrar_sesion():
        #Implementación función cierre sesión
    def publicar_comentario(post_id, comentario):
        #Implementación función publicación comentario

Para obtener un atributo de un objeto se le referencia separando el nombre del objeto del nombre del atributo

usuario_comun = Usuario("Pedro", "Gonzales", "pgonzales")
print(usuario_comun.apellido)

De manera similar es posible modificar el valor del atributo de un objeto

usuario_comun.apellido = "Sosa"
usuario_comun.activo = False

En este artículo hemos visto cómo definir clases, instanciar objetos y utilizar sus métodos y atributos en Python. Estos conceptos son fundamentales para iniciar el aprendizaje de la programación orientada a objetos. Espero que les sirva!


¿Querés aprender más? 📚

👉 Visitá nuestros cursos!
💬 Y si tenés dudas, o querés dejarnos tus comentarios sumate a la Comunidad JuncoTIC en Telegram!
¡Te esperamos!


Andrea Navarro

- Ingeniera en Informática - Docente universitaria - Investigadora