Paradigma de Objetos en Python
Table of Contents
ToggleIntroducción
El paradigma de objetos en Python, también conocido como Programación Orientada a Objetos (POO), se trata de un paradigma de programación introducido en la década del 70’ del siglo pasado. Este nos permite organizar el código de una manera que se asemeja bastante a como pensamos y utilizamos objetos en la vida cotidiana. Pero nosotros vamos a utilizar o crear clases, como si fueran una fábrica de objetos. En otras palabras, éstas les darán “vida” a los objetos, ya que, las utilizaremos para especificar y nombrar sus métodos (lo que un objeto puede hacer) y sus atributos (las características de un objeto). Es necesario haber estudiado el uso de funciones en el apartado anterior.
Por lo tanto, las clases nos permiten agrupar un conjunto de variables y funciones, con las cuales podemos crear entidades que vivirán en nuestros programas.
Existen diversos lenguajes que trabajan con POO, pero los más populares son aquellos en los que los objetos son instancias de clases. Por lo tanto, los conceptos fundamentales del paradigma de objetos en Python, son la encapsulación, abstracción, herencia y el polimorfismo. Los cuales se especificarán en la siguiente página.
Aspectos básicos de una clase
Las clases se definen vía la palabra reservada class seguida de su nombre y, entre paréntesis, el nombre de las clases de las cuales debe heredar, en caso de haber.
class MiClase:
pass
Recordemos que pass no ejecuta ninguna operación, sino que simplemente rellena un lugar que es requerido sintácticamente. La convención para nombrar una clase difiere de las funciones y otras sentencias, en las clases cada término se escribe con su primera letra en mayúscula y no se emplean guiones bajos.
Ahora bien, todas las clases necesitan que se ejecute un código cada vez que se haga uso de ella y en donde el programador tendrá la posibilidad de inicializar lo que sea necesario.
class MiClase:
def __init__(self):
pass
¿Qué son los Métodos?
A las funciones definidas dentro de una clase se las conoce con el nombre de método. Los mismos, en POO, hacen los objetos. Por ejemplo: Si una clase crea el objeto Personas, entonces un método puede ser hablar, porque las personas hablan.
class Persona():
def Hablar():
print(“Hola”)
La función __init__() es un método que será invocado automáticamente por Python cada vez que se cree un objeto a partir de una clase. También denominado constructor en muchas bibliografías. A su vez, se dice que mi_objeto es una instancia de la clase MiClase. Por ejemplo:
mi_objeto = MiClase()
Para ilustrarlo mejor, probemos el siguiente código:
class MiClase:
def __init__(self):
print(«Esto es una instancia de MiClase.»)
mi_objeto = MiClase()
Out:
Esto es una instancia de MiClase.
Habrá observado que, si bien el método __init__() requiere de un argumento, ya que no hemos especificado ninguno al crear una instancia, se debe a que Python coloca el primer argumento de todos los métodos de una clase automáticamente. self es una referencia a la instancia actual de la clase (por convención se lo llama así).
Por ejemplo, consideremos el siguiente código, el cual crea dos instancias de MiClase.
mi_objeto = MiClase()
otro_objeto = MiClase()
En ambos casos, para crear la instancia, Python automáticamente llama al método __init__(). Sin embargo, en la primera línea, self será una referencia a mi_objeto, mientras que, en la segunda, a otro_objeto.
Por lo general estarás utilizando el método __init__() para inicializar objetos dentro de tu clase.
Ejemplo:
class MiClase:
def __init__(self):
self.a = 1
mi_objeto = MiClase()
print(mi_objeto.a)
Out:
1
¿Qué son los Atributos?
Los atributos, son características, cualidades o descripciones que los objetos tienen. Aunque, desde un punto de vista de Código, en realidad son datos que pueden tener los objetos. Por ejemplo:
class Carro():
color
llantas
marca
El método __init__() puede tener atributos posicionales y por nombre como cualquier otra función convencional, que serán especificados al momento de crear una instancia de la clase.
class FabricaTelefonos():
def __init__(self , marca , color):
self.marca = marca
self.color = color
telefono = FabricaTelefonos(‘Huawei’ , «Azul»)
print(telefono.marca)
print(telefono.color)
Out:
Huawei
Azul
Se dice que marca y color son un atributo de mi_objeto ,o en general, de MiClase(). También podemos cambiar el valor de un atributo desde fuera de la clase:
class FabricaTelefonos():
def __init__(self , marca, cantidad):
self.marca = marca
self.cantidad = cantidad
telefono = FabricaTelefonos(“Huawei”,10)
print(telefono.marca)
teléfono.cantidad += 1
print(telefono.cantidad)
Out:
Huawei
11
Prácticas y ejemplos:
A continuación mencionaremos algunos ejemplos para no pasar por alto algunos aspectos importantes
Ejemplo 1
Una clase también puede incluir funciones, aunque recordemos, siempre el primer argumento debe ser self. Veamos a continuación:
class FabricaTelefonos():
def llamar(self , mensaje):
return mensaje
def escucharMusica(self):
print(«Estas escuchando Música»)
telefono = FabricaTelefonos()
print(telefono.llamar(«Hola, ¿Con quién hablo?»))
telefono.escucharMusica()
Out:
Hola, ¿Con quién hablo?
Estas escuchando música
Ejemplo 2
Ahora bien, en el siguiente ejemplo ampliaremos un poco más el ejemplo anterior. De esta forma, podemos darnos una idea de cómo funcionan y están comprendidos ciertos programas, aplicaciones, juegos, etc..
class FabricaTelefonos():
def __init__(self, tecnologia, marca, *color, **modelo):
self.tecnologia = tecnologia
self.marca = marca
self.color = color
self.modelo = modelo
print(f»El objeto {self.tecnologia} ha sido creado»)
def llamar(self , mensaje):
return mensaje
def escucharMusica(self):
print(«Música: Con esta función puedes escuchar música..»)
telefono = FabricaTelefonos(«CELULAR»,»Samsung», «Negro», «Blanco», j = «prime», j2 = «premium»)
telefono.memoria = 512
print(«Sus atributos son:\n»)
print(«Marca: «,telefono.marca)
print(«Colores: «,telefono.color)
print(«Modelo: «,telefono.modelo)
print(«La cantidad de memoria es: «,telefono.memoria,»GB\n»)
print(«Sus funciones son:\n»)
print(telefono.llamar(«Lamadas: Hola! Con esta función puedes realizar llamadas..»))
telefono.escucharMusica()
Out:
El objeto CELULAR ha sido creado
Sus atributos son:
Marca: Samsung
Colores: (‘Negro’, ‘Blanco’)
Modelo: {‘j’: ‘prime’, ‘j2’: ‘premium’}
La cantidad de memoria es: 512 GB
Sus funciones son:
Hola! Con esta funcion puedes realizar llamadas..
Con esta funcion puedes escuchar música..