Python - programación orientada a objetos

La Programación Orientada a Objetos (POO) es un paradigma de programación basado en el concepto de objeto. En el contexto de la POO, los objetos son entidades que poseen:

  • Estado: implementado con un conjunto de variables llamadas propiedades.

  • Comportamiento: implementado con un conjunto de funciones llamadas métodos.

Los objetos se agrupan en clases. Todos los objetos de una clase contienen los mismos métodos y propiedades. Una clase puede verse como una plantilla o “machote” a partir de la cual se crean objetos. A un objeto creado a partir de una clase se le llama también una instancia de esa clase.

# Definición de la clase cuentaBancaria
class cuentaBancaria:
    # Propiedades
    propietario = ""
    balance = 0
    
    # Métodos
    # Constructor de la clase: crea nuevas instancias e inicializa las propiedades
    def __init__(self, propietario, balance):
        self.propietario = propietario
        self.balance = balance
    
    # Método para realizar depósitos
    def depositar(self, monto):
        self.balance = self.balance + monto

    # Método para realizar retiros
    def retirar(self, monto):
        self.balance = self.balance - monto

    # Método para imprimir información
    def imprimirInformacion(self):
        print("Propietario: " + self.propietario + ", Balance: " + str(self.balance))       

Una vez definida una clase, pueden declararse objetos o instancias de esta. Las instancias pueden invocar métodos de la clase mediante la notación:

    <instancia>.<método>

A continuación, se presentan algunos ejemplos de instancias de la clase cuentaBancaria y de llamados a sus métodos.

# Instancia cuenta01
cuenta01 = cuentaBancaria("Juan Pérez", 1000)
cuenta01.depositar(5000)
cuenta01.imprimirInformacion()
Propietario: Juan Pérez, Balance: 6000
# Instancia cuenta02
cuenta02 = cuentaBancaria("María Pérez", 10000)
cuenta02.depositar(15000)
cuenta02.retirar(24000)
cuenta02.imprimirInformacion()
Propietario: María Pérez, Balance: 1000

Objetos y clases predefinidas de Python

Todos los datos de un programa en Python se representan mediante objetos o por relaciones entre objetos. Los tipos de datos corresponden a las clases de los objetos.

# Clase int
print(type(234))
<class 'int'>
# Clase float
print(type(10.3))
<class 'float'>
# Clase bool
print(type(True))
<class 'bool'>
# Clase list
print(type([True, 23, 20.6, (1, 2, 3)]))
<class 'list'>

El que un dato sea un objeto, implica que además de su valor tiene un conjunto de operaciones asociadas (métodos) que se aplican mediante operadores (ej. +, -, *, %) o funciones (ej. len(), type()). Tanto los operadores como las funciones pueden aplicarse en varias clases. Por ejemplo, el operador + se usa para int, float, str, list y otras clases; len() se usa también en varios tipos de datos.