Libro Python Aplicado de Eugenia Bahit. GNU/Linux, ciencia de datos, y desarrollo web

Banner de Python Aplicado

Programación orientada a objetos con Python


Cita con formato IEEE:
E. Bahit, "Programación orientada a objetos con Python", in Python Aplicado, 4th ed., EBRC Publisher, 2022, pp. 267-278.

Cita con formato APA 7:
Bahit, E. (2022). Programación orientada a objetos con Python. In Python Aplicado (4th ed., pp. 267-278). EBRC Publisher.

Cita en línea:
(Bahit, 2022)

En esta sección se hará una breve introducción al paradigma de la programación orientada a objetos, aspectos más elementales y cómo estos han sido implementados por Python. No se abarcarán conceptos avanzados o teóricos relativos al pensamiento computacional aplicado al análisis de objetos.

Breve introducción a la programación orientada a objetos

Un paradigma de programación es aquello que define la forma en la que la estructura y los elementos de un programa se deben construir.

El paradigma de la programación orientada a objetos establece que un programa debe ser construido sobre la base de unos elementos que se denominan objetos.

Este paradigma propone la agrupación de datos y operaciones —relativas a esos datos—, en elementos que que los mantienen aislados del entorno.

Hasta aquí se ha visto cómo los datos (variables) y operaciones (funciones) se mantienen dispersas a lo largo de uno o más scripts. A partir de ahora, se verá que en la programación orientada a objetos estos datos y operaciones mantienen agrupados en estructuras de control denominadas clases.

De esta manera, mientras que en la programación estructurada un dato a y un dato b procesados mediante una operación c se veían de esta forma:

a = 25
b = 5

def c(a, b):
    return a * b

result = c(a, b)

En la programación orientada a objetos se encapsulan de esta otra:

class X:

    a = 25
    b = 5
    
    def c(self):
        return self.a * self.b

x = X()
result = x.c()

Elementos y características de la programación orientada a objetos

La programación orientada a objetos define entonces, unos elementos y características que los lenguajes de programación que soportan este paradigma deben ofrecer. En lo sucesivo se explican estos elementos y características junto al código Python que los implementa.

Clases

Se define como clase a aquella estructura de control cuyo objetivo es definir los datos —denominados propiedades— y operaciones —denominadas métodos— necesarios para crear un objetos.

Métodos y propiedades

Los métodos son las operaciones definidas dentro de una clase mientras que las propiedades, los datos.

Un método se ve como una función pero dentro de la clase, mientras que una propiedad, como una variable.

class A:

    b = 15
    c = 10

    def d(self):
        return self.b * self.c

En el ejemplo anterior, A es una clase; b y c son sus propiedades; y d, su único método. self es una característica particular de Python de la que se hablará posteriormente.

Objetos

Se define como objeto a un conjunto de datos y operaciones encapsulados. Técnicamente, un objeto es la instancia de una clase (donde el término «instancia» se refiere a que la clase ha sido invocada).

En términos prácticos, un objeto es una variable cuyo valor es la instancia de una clase.

class A:
    pass

a = A()

En el ejemplo previo, a es un objeto y A() es la instancia de la clase denominada A.

Polimorfismo

Se denomina polimorfismo a la característica que posibilita que un único objeto pueda estar formado por más de un tipo de datos.

En el siguiente ejemplo, se dice que a es polimórfico debido a que posee más de un tipo de datos:

class A:
    pass

a = A() # "a" es un objeto polimórfico
a.tipo_entero = 12
a.tipo_string = 'cadena de texto'
a.tipo_boolean = False