0% encontró este documento útil (0 votos)
57 vistas9 páginas

Helecace - Clases en Python

El documento explica conceptos clave de la programación orientada a objetos en Python como clases, objetos, atributos y métodos. Indica que una clase es una plantilla que define las características y capacidades de los objetos que se crean a partir de ella. Los objetos son entidades que almacenan información y realizan tareas mediante sus atributos (características) y métodos (acciones). El documento también describe cómo crear clases en Python e instanciar objetos a partir de ellas.

Cargado por

Laura Vilbao
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
57 vistas9 páginas

Helecace - Clases en Python

El documento explica conceptos clave de la programación orientada a objetos en Python como clases, objetos, atributos y métodos. Indica que una clase es una plantilla que define las características y capacidades de los objetos que se crean a partir de ella. Los objetos son entidades que almacenan información y realizan tareas mediante sus atributos (características) y métodos (acciones). El documento también describe cómo crear clases en Python e instanciar objetos a partir de ellas.

Cargado por

Laura Vilbao
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 9

Clases en Python (Programación orientada a

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.

Entonces llega el momento de programar pensando orientado a objetos; aprendiendo el


correcto manejo de Clases en Python.

¿Qué es una clase en Python?

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.

Crear un objeto a partir de una clase se denomina instanciar.

¿Qué es un Objeto en Python?

Un objeto son entidades que tienen un comportamiento; un estado; almacenan


información y pueden realizar tareas. Refiriéndonos a comportamiento como acciones o
capacidades de realizar cambios; y a estados como situación o modo de estar en un
momento determinado.

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.

Atributos y métodos de un objeto.

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:

• Tenemos la Clase: Animal


• El objeto instanciado (creado a partir de esa clase): Perro
• Que tiene sus atributos:

• Color: negro;
• Raza: Coquer;
• Tiene collar: True (si))
• Y tiene sus métodos:

• Ladra (“Guau; guau”)
• Corre (Run)
• Camina()
• Olfatea()

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).

Entonces vamos a realizar un repaso; puesto que estos conceptos y su entendimiento en


profundidad son esenciales para programar orientado a objetos de manera lógicamente
correcta.

• Clase: Plantilla o modelo a partir de la cual podemos crear objetos y donde se


determinan los atributos (características) y métodos (acciones realizables)
que tendrán.

• Objeto: Normalmente creado a partir de una clase son entidades que


almacenan información en forma de argumento para atributos y realizan
acciones organizadas a través de métodos que permiten cambiar atributos o
estados del objeto o de otros objetos de la clase

• 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).

• Instancia: Palabra que refiere a la creación de un objeto partiendo de una clase.


Durante la instancia son asignados los valores iniciales para los atributos.

Sintaxis de clases en Python y ejemplos

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 de las clases en Python (__init__)


Si hablamos de métodos de una clase puede existir diferentes tipos de ellos.
Pero el más importante es el método constructor; el cual dicho nombre hace referencia
a inicializar los atributos del objeto creado a partir de la clase que lo posea. Por supuesto
no es necesario que este método exista dentro de una clase para que la clase exista. Pero si
es necesario para indicarle al intérprete de Python que cuando se Instancia un objeto a dicha
clase debe asignarle los argumentos que nosotros le damos al momento de la instancia.
(inicialización de atributos)

• Este método se escribe “__init__” y yo para recordarlo lo suelo asimilar con


“inicializar”. Una clase que posea este método creara el objeto con los “argumentos”
para los atributos que se pasen al momento de la instancia.
• El método __init__ NO RETORNA NINGÚN DATO Y ES OPCIONAL. Cuando decimos
que no retorna ningún dato significa que a diferencia de otros métodos este no puede
retornar valores luego de ejecutado.
• Este método es llamado automáticamente al instanciar un objeto a la clase que tenga
el constructor por lo que su uso es muy común y practico.

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”.

Creamos la clase producto y el método constructor donde definimos que el atributo


color será igual al parámetro color que pasemos en el índice “0” (cero; primer
parámetro).

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.

Sintaxis de clases en Python e instancia


Instanciar es crear un objeto a partir de una clase.

class Humano(): #Creamos la clase Humano


def __init__(self, edad, nombre): #Definimos el atributo edad y nombre
self.edad = edad # Definimos que el atributo edad, será la edad asignada
self.nombre = nombre # Definimos que el atributo nombre, será el nombre asignada
Persona1 = Humano(31, "Pedro") #Instancia
Como puede ver:

1. Creamos la clase Humano.


2. Dentro de ella creamos el método constructor utilizando la palabra
reservada def seguida del constructor __init__y luego entre paréntesis
colocamos los parámetros; donde el primero es una palabra
reservada self (que refiere al objeto mismo) y seguido nuestros atributos
parámetros separados por coma.
3. Indicamos mediante self.nombreatributo que nuestro parámetro es igual
al argumento que pasemos como valor al momento de la instancia. Diciéndole
al interprete que cuando pasemos edad y nombre; sean iguales a edad y
nombre.
4. Ahora para crear un objeto de la clase Humano debemos definir un nombre
para nuestro objeto e indicar mediante el operador de asignación “=” que
pertenece a la clase Humano y dentro de paréntesis indicar los valores
(argumentos) para “edad” y “nombre” (que son parámetros). En este caso fue
31 y “pedro”. Fíjese que el orden debe ser igual a como se definiron los
argumentos en el constructor de la clase.

Agregar nuevos métodos y atributos a clases en python


En este caso vamos a jugar con la clase Humano. Donde tendremos
tres atributos “Edad”, “Nombre” y “Ocupación”. Y crearemos métodos que nos detallen el
nombre, edad y ocupación de cada objeto Persona.metodos
Para este ejemplo usaremos el mismo código anterior; en el código anterior ya
teníamos dos atributos. Edad y Nombre; ahora vamos a agregar un tercer atributo
“Ocupacion” (sin tilde), pero sabemos que se refiere a su empleo, oficio, etc.

class Humano(): #Creamos la clase Humano


def __init__(self, edad, nombre): #Definimos el parámetro edad y nombre
self.edad = edad # Definimos que el atributo edad, será la edad asignada
self.nombre = nombre # Definimos que el atributo nombre, será el nombre asig
Persona1 = Humano(31, "Pedro") #Instancia
En el método constructor debemos añadir nuestro nuevo atributo de instancia “Ocupacion”.
Si esta dentro del constructor es un atributo de instancia lo que significa que debe
especificarse un “valor” al momento de crear el objeto a partir de esta clase.

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]).

class Humano(): #Creamos la clase Humano


def __init__(self, edad, nombre, ocupacion): #Definimos el parámetro edad , nombre y ocupacion
self.edad = edad # Definimos que el atributo edad, sera la edad asignada
self.nombre = nombre # Definimos que el atributo nombre, sera el nombre asig
self.ocupacion = ocupacion #DEFINIMOS EL ATRIBUTO DE INSTANCIA OCUPACION
Persona1 = Humano(31, "Pedro", "Desocupado") #Instancia
Como ve inmediatamente también se añadío el argumento “Desocupado” en la instancia.
Hay que fijarse que se respeta el orden de estos argumentos para cada parámetro definido
en el constructor de la clase. OJO a eso!

Añadiendo un nuevo método de instancia

Ya hablamos del método constructor.

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.

class Humano(): #Creamos la clase Humano


def __init__(self, edad, nombre, ocupacion): #Definimos el parametro edad , nombre y ocupacion
self.edad = edad # Definimos que el atributo edad, sera la edad asignada
self.nombre = nombre # Definimos que el atributo nombre, sera el nombre asig
self.ocupacion = ocupacion #DEFINIMOS EL ATRIBUTO DE INSTANCIA OCUPACION
#Creación de un nuevo método
def presentar(self):
presentacion = ("Hola soy {}, mi edad es {} y mi ocupación es {}") #Mensaje
print(presentacion.format(self.nombre, self.edad, self.ocupacion)) #Usamos FORMAT
Persona1 = Humano(31, "Pedro", "Desocupado") #Instancia
#Llamamos al método
Persona1.presentar()
Resultado:
Hola soy Pedro, mi edad es 31 y mi ocupación es Desocupado

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

Y para llamar el mismo

Objeto.NombredelMetodo(parámetros)

Cambiar atributos mediante métodos


Así ya vimos como crear y llamar métodos; estos métodos también pueden modificar
atributos fíjese el siguiente ejemplo (creamos otro método para modificar el atributo
ocupación):

class Humano(): #Creamos la clase Humano


def __init__(self, edad, nombre, ocupacion): #Definimos el parámetro edad , nombre y ocupación
self.edad = edad # Definimos que el atributo edad, sera la edad asignada
self.nombre = nombre # Definimos que el atributo nombre, sera el nombre asig
self.ocupacion = ocupacion #DEFINIMOS EL ATRIBUTO DE INSTANCIA OCUPACIÓN
#Creación de un nuevo método
def presentar(self):
presentacion = ("Hola soy {}, mi edad es {} y mi ocupación es {}") #Mensaje
print(presentacion.format(self.nombre, self.edad, self.ocupacion)) #Usamos FORMAT
#Creamos un nuevo método para cambiar la ocupación:
#En caso que esta persona sea contratada
def contratar(self, puesto): #añadimos un nuevo parámetro en el método
self.puesto = puesto
print ("{} ha sido contratado como {}".format(self.nombre, self.puesto))
self.ocupacion = puesto #Ahora cambiamos el atributo ocupación
Persona1 = Humano(31, "Pedro", "Desocupado") #Instancia
#Llamamos al método
Persona1.presentar()
Persona1.contratar("Obrero")
Persona1.presentar() #Lo volvemos a presentar luego de su contratación
Esta practica es ideal. Lo más practico es crear métodos para modificar los atributos de
nuestros objetos. En las clases en Python), siempre deben crearse las variables de atributos
como privadas y ser modificadas mediante métodos públicos.
De esta forma se conserva el principio de encapsulamiento. Tenerlo en cuenta; aunque aún
no lo hallas aprendido que conviene crear métodos para cada cambio a realizar en los
atributos.

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.

También podría gustarte