Helecace - Clases en Python
Helecace - Clases en Python
objetos)
Python es un lenguaje orientado a objetos; anteriormente aprendimos algunas estructuras
de datos (Listas; Tuplas, etc.) y también estructuras de control (Condicionales; Bucles; etc.).
Pero si no hablamos de clases en Python nos estamos refiriendo a que
aprendimos programación estructurada.
Python admite OOP y Programación estructurada, Python admite estos dos paradigmas de
programación (Programación estructurada y Programación orientada a objetos ),primero
aprendimos a crear programas sin recurrir obligadamente a conceptos de programación
orientada a objetos mediante el entendimiento de la programación estructurada.
Podemos definir una clase como una Plantilla o modelo para crear a partir de ella
ciertos Objetos. Esta plantilla es la que contiene la información; características y
capacidades que tendrá el objeto que sea creado a partir de ella.
Así a su vez los objetos creados a partir de ella estarán agrupados en esa misma clase.
Imagine que tiene una regla de esas con moldes para crear figuras geométricas perfectas.
Pues algo así sería una clase; se puedes crear esa regla y definir en ella las características
de cada figura que sería un objeto.
Pero hay algo que debes saber también de los objetos. No necesariamente todos deben
derivar de una clase; pueden existir objetos sin que hayan sido creados de una clase en
particular.
Y en Python casi todo es un objeto; puesto que el concepto de la programación orientada a
objetos consiste en resolver problemas grandes subdividiendo nuestro programa en otros
más pequeños a cargo de objetos con determinadas características y tareas
encomendadas.
Pues así también debemos planificar nuestro programa; pensando en clases que crearán
objetos y estos objetos trabajaran y almacenaran datos para cumplir la función o brindar la
solución objetivo de nuestro programa.
Los objetos almacenan información y realizan tareas. Entonces estos atributos pueden
llamarse las características que nosotros definimos para ese objeto. ¡Y métodos las tareas
que son capaces de realizar!
Suponiendo:
Pero estos atributos y métodos se definen en la clase; al momento de crear la clase y luego
al momento de instanciar (crear un objeto a partir de clase) se le brindan los “argumentos”
para esos atributos y métodos.
Recuerde que los atributos son las características del objeto normalmente almacenadas en
variables declaradas en la clase.
Y los métodos podrían verse como funciones del objeto que puede realizar y que a veces
necesitan de ciertos argumentos para poder operar con sus parámetros.
Para llevarse a cabo en Python o en cualquier otro lenguaje hay que respetar cierta sintaxis y
demás normas que luego habrás de aprender.
Ejemplo gráfico de Clases en Python; objeto e instancia
Ejemplo vamos a jugar a ser Dioses: Vamos a crear la clase Humano que tendrá ciertos
atributos propios de cualquier ser Humano y algunos métodos también que pueden realizar
los seres humanos. A partir de esta clase vamos a crear dos objetos: Marcos y Elisa. Que
serán nuestros seres y al momento de la instancia les vamos a dar los valores para cada uno
de sus atributos y métodos.
• La clase Humano posee Atributos (Fecha de nacimiento; edad; Padres;
Genero..)
• La clase Humano posee Métodos (Correr; Caminar y Hablar)
• Los objetos Marcos y Elisa pertenecen a la misma Clase; pero tienen
Diferentes valores para los atributos y sus métodos quizás obtengan diferentes
argumentos (valores para sus parámetros).
• Los atributos: Son variables de diferentes tipos (Entero; Texto; Booleanos) que
pueden tener valores por defecto o le podrán ser asignadas al momento de
la Instancia de un objeto determinando sus características y estado.
• Los métodos: Son funciones; acciones realizables por el objeto que permiten
cambiar sus atributos o el de otros objetos de la clase permitiendo un cambio
de estado del objeto; a menudo requiriendo “argumentos (valores)” para
determinados “parámetros (nombres de variables establecidas en funciones o
rutinas).
Para crear una clase recurrimos a la expresión class seguida del nombre de la clase y entre
paréntesis la clase de la cual hereda (una clase puede recibir atributos y métodos de
otra). Al momento de crear una clase si este parámetro entre paréntesis no se declara; la
clase automáticamente heredara de Object (que es una clase predefinida osea existente en
el propio lenguaje por defecto.). Seguidamente colocamos dos puntos y debajo (dentro del
bloque de código) definimos el método constructor de la clase seguido también de
paréntesis para establecer parámetros y luego colocamos dos puntos “:” teniendo así dentro
de la clase otro bloque de código.
Class Nombredelaclase (object): #Declaramos la clase nuestra que hereda
de Object
def __init__ (self, parámetros): #Constructor de la clase
#Declaración de atributos
El método constructor permitirá asignar atributos cada vez que creemos un objeto a partir
de esa clase haciéndolo obligatorio. Y además permitirá llamar métodos de la clase sin
instanciar; entre otras cosas.
Suponga que debe crear 50 objetos a partir de la misma clase y todos esos métodos
tendrán el atributo “color”.
Class Producto():
Constructor __init__(self, color) :
self.color = color #Atributo
Instanciamos objetos:
• Objeto1 = Producto(“AZUL”)
• Objeto2 = Producto(“ROJO”)
• Objeto3 = Producto(“NEGRO”)
No necesita especificar que el argumento “AZUL” por ejemplo; corresponde al
atributo color aunque tuviera más de un atributo el intérprete se guía por el orden
(índice) en que le pasamos argumentos y declaramos parámetros.
Así que lo añadimos como parámetro dentro del paréntesis del constructor __init__ y
también dentro del mismo utilizando self (“este o si mismo” [se refiere al objeto creado a
partir de la clase. Instanciado]).
Ahora aprendamos los métodos tradicionales que son los Métodos de clase (puesto que
existen 3 tipos de métodos; pero nos enfocaremos en el de clase que es el más habitual.
Entonces en nuestro código anterior yo quisiera agregar un método para retornar el valor de
cada argumento de mi objeto Persona1.
Ya tenemos nuestro objeto creado y todo. Pero NO HACE NADA!.
Si ejecuta el código en consola no obtiene error de sintaxis pero tampoco obtiene ninguna
salida.
Vamos a crear un método de clase que al ejecutarlo nos devuelva toda la información de
nuestro objeto.
Para crear un método lo hacemos a través de la palabra reservada def (al igual que las
funciones o como la utilizamos para crear nuestro método constructor). Seguido a ella el
nombre del método y luego entre paréntesis los parámetros; finalmente dos puntos “:” y
continuamos debajo identando.
En este caso dentro de los parámetros del método incluimos self para hacer referencia
al objeto instanciado, aunque todavía no sepamos su nombre. Entonces simplificamos su
sintaxis siendo:
def NombredelMetodo (self, parámetros):
Declaraciones
Objeto.NombredelMetodo(parámetros)
Self en Python
Self no es en realidad una palabra reservada del lenguaje. Esta hace referencia al
objeto en instancia, pero no obligadamente tiene que tener ese nombre, pero en
Python podemos usar cualquier nombre en vez de Self; aunque es buena práctica
simplemente usar self para no descubicarse.