Sunteți pe pagina 1din 8

Clases y m�todos en Python 3 + Ejercicio � OOP

Dejar un comentario / Clases, Curso python 3 / Por Pyromaniac


Anteriormente hab�amos dicho que Python es un lenguaje orientado a objetos. Y como
bien ya sabes, todo en python es un objeto. Hoy vamos a ver que son las clases,
como las creamos y cuales son los atributos y m�todos de nuestros objetos.

Es importante que comprendas estos conceptos para adentrarte en el mundo de la OOP


(programacion orientada a objetos)

Indice del contenido


Clases en Python 3
Comprendiendo las clases y m�todos

Sintaxis de clases en python y ejemplos


Atributos
M�todos
A�adir m�todos
Ejercicio
Clases en Python 3
Podemos definir a las Clases como la representaci�n abstracta de un objeto, es
decir que se refiere a un conjunto de entidades con caracter�sticas comunes.

Entonces, a partir de estos prototipos (clases) podemos crear mas objetos que
adquieran estos atributos, caracter�sticas y comportamientos en com�n.

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

Saber aplicar las clases y m�todos te servir� para definir tus propios tipos de
datos y te permitir� crear objetos de ese tipo.

Comprendiendo las clases y m�todos


Tenemos tres objetos, dos de ellos pertenecen a la clase Humano y el restante es un
Androide que pertenece a la clase marciano.

Por el hecho de pertenecer a la clase humano, se le brinda como un atributo la


edad, nombre, y al marciano los siglos de vida y un serial de identificaci�n
(recuerda que es un alienigena :P).

La clase humano contiene m�todos humanos como hablar, correr. Y la clase marciano
posee el m�todo de abducci�n.

Objeto Clase Atributo M�todo


Pedro Humano Edad:25 Hablar
Manuela Humano Edad:27 Correr
Androide Marciano
Siglos: 2

Abducci�n

Sintaxis de clases en python y ejemplos


Para crear una clase recurrimos a la expresi�n class

Class Nombredelaclase (object):

def constructor_init (self, par�metros):

Declaraci�n
Y cuando asignamos la clase a un objeto:

Objeto = Nombredelaclase(argumentos)

Ahora llevemos esto al c�digo, para crear una clase en python lo hacemos de la
siguiente manera:

class Nombredelaclase(object):
def __init__(self, atributos):
self.atributos = atributos #3
1
2
3
class Nombredelaclase(object):
def __init__(self, atributos):
self.atributos = atributos #3
Vamos a tratar de explicar este c�digo para aquellos que se inician en python y
adem�s te voy a dejar una recomendaci�n:

La palabra reservada class indica que luego de la misma se especificar� una nueva
clase. Entre par�ntesis especificamos tambi�n que esta clase nueva hereda de
object. Y siempre debemos tratar de heredar de object o de otra clase.

Cuando utilizamos def estamos definiendo los atributos a trav�s de __init__ que es
el m�todo constructor en Python. Y siempre se ejecuta cuando se crea un objeto.
Self se refiere al objeto instanciado de esa clase sobre el cual se est� invocando
dicho m�todo. Es decir, el objeto que usamos para llamar el m�todo (#3) [Significa
�yo� refiri�ndonos a la clase]. Pero el uso de self es solo una buena pr�ctica
recomendada, no es una palabra reservada de uso obligatorio por lo que podr�amos
usar cualquiera.

En este caso ahora vamos a crear la clase Humano con el atributo Edad y Nombre. Y
la clase Marciano con el atributo Siglos y Serial (identificaci�n de un androide):

#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Humano: #Creamos la clase Humano
def __init__(self, edad, nombre): #Definimos el atributo edad
self.edad = edad # Definimos que el atributo edad, sera la edad asignada
self.nombre = nombre # Definimos que el atributo nombre, sera el nombre
asig

class Marciano: #Creamos la clase Marciano


def __init__(self, siglos, serial): #Definimos el atributo siglos
self.siglos = siglos # Definimos que el atributo edad, sera la edad
asignada
self.serial = serial # Definimos que su serial, sera la serial asignada
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Humano: #Creamos la clase Humano
def __init__(self, edad, nombre): #Definimos el atributo edad
self.edad = edad # Definimos que el atributo edad, sera la edad asignada
self.nombre = nombre # Definimos que el atributo nombre, sera el nombre
asig

class Marciano: #Creamos la clase Marciano


def __init__(self, siglos, serial): #Definimos el atributo siglos
self.siglos = siglos # Definimos que el atributo edad, sera la edad
asignada
self.serial = serial # Definimos que su serial, sera la serial asignada
Ahora que hemos creado las clases debemos asignarles las mismas a los objetos
Pedro, Manuela, Androide. Y tambi�n pasar los argumentos correspondientes a �edad�
o �siglos� y �nombre� o �serial� seg�n corresponda. Y lo hacemos de la siguiente
manera:

Pedro = Humano(25, "Pedro Rosendo")


Manuela = Humano(27, "Manuela Panuela")
Androide = Marciano (2, '00199017')

#Agregamos un print Type para comprobar el tipo de objeto


print (type (Pedro))
print (type (Manuela))
print (type (Androide))
1
2
3
4
5
6
7
8
Pedro = Humano(25, "Pedro Rosendo")
Manuela = Humano(27, "Manuela Panuela")
Androide = Marciano (2, '00199017')

#Agregamos un print Type para comprobar el tipo de objeto


print (type (Pedro))
print (type (Manuela))
print (type (Androide))
El resultado del c�digo completo sera:

<class �__main__.Humano�>
<class �__main__.Humano�>
<class �__main__.Marciano�>

Lo que nos indica que los primeros dos objetos corresponden a la clase Humano y el
�ltimo a la clase Marciano.

Atributos
Los objetos cuentan con elementos que almacenan datos y otros que ejecutan
acciones. A estos elementos que almacenan datos los definimos como atributos. Y los
definimos as�:

Vamos ahora a imprimir el atributo edad o siglo del objeto seg�n corresponda:

print (Pedro.edad)
print (Manuela.edad)
print (Androide.siglos)
1
2
3
print (Pedro.edad)
print (Manuela.edad)
print (Androide.siglos)
Resultado:

25
27
2

M�todos
Los m�todos de los objetos vendr�an a ser los elementos que ejecutan acciones y se
definen al igual que las funciones en python (def) pero dentro de la clase. Podemos
ver a un m�todo como las �acciones que los objetos pueden realizar�, en el caso del
ejemplo anterior podr�an ser hablar, correr o en el caso de la clase marciano la
abducci�n.

A�adir m�todos
Ahora vamos a a�adirle a estas clases los m�todos que tendr�n estos objetos y lo
hacemos como si fuera una funci�n dentro de la clase correspondiente:

class Humano(object): #Creamos la clase Humano


def __init__(self, edad, nombre): #Definimos el atributo edad
self.edad = edad # Definimos que el atributo edad, sera la edad asignada
self.nombre = nombre # Definimos que el atributo nombre, sera el nombre
asig

def hablar (self, mensaje):


print (('-'), (mensaje))

def correr (self, kilometros): #Definimos el m�todo correr y usamos el


par�metro kilometros
self.kilometros = kilometros #El par�metro kilometros sera igual al arg que
le asignemos
print (("""Ha corrido"""), (kilometros), ("""km""")) #Imprimimos el
resultado

class Marciano(object): #Creamos la clase Marciano


def __init__(self, siglos, serial): #Definimos el atributo siglos
self.siglos = siglos # Definimos que el atributo edad, sera la edad
asignada
self.serial = serial # Definimos que el atributo serial, sera la serial
asignada

def abducir (self, persona): #Creamos el metodo abducci�n con el par�metro


persona
print ((Androide.serial), ("""ha abducido a"""), (persona), ("""usando
ondas"""))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Humano(object): #Creamos la clase Humano
def __init__(self, edad, nombre): #Definimos el atributo edad
self.edad = edad # Definimos que el atributo edad, sera la edad asignada
self.nombre = nombre # Definimos que el atributo nombre, sera el nombre
asig

def hablar (self, mensaje):


print (('-'), (mensaje))

def correr (self, kilometros): #Definimos el m�todo correr y usamos el


par�metro kilometros
self.kilometros = kilometros #El par�metro kilometros sera igual al arg que
le asignemos
print (("""Ha corrido"""), (kilometros), ("""km""")) #Imprimimos el
resultado

class Marciano(object): #Creamos la clase Marciano


def __init__(self, siglos, serial): #Definimos el atributo siglos
self.siglos = siglos # Definimos que el atributo edad, sera la edad
asignada
self.serial = serial # Definimos que el atributo serial, sera la serial
asignada

def abducir (self, persona): #Creamos el metodo abducci�n con el par�metro


persona
print ((Androide.serial), ("""ha abducido a"""), (persona), ("""usando
ondas"""))

Ahora vamos a llamar estos m�todos y atributos por ejemplo as�:

Pedro.correr (12) #Llamamos m�todo


print (Pedro.nombre) #Imprimimos Argumento
Pedro.hablar ("""uff, Hola""") #Llamamos m�todo
Androide.abducir(Pedro.nombre) #Llamamos m�todo
1
2
3
4
Pedro.correr (12) #Llamamos m�todo
print (Pedro.nombre) #Imprimimos Argumento
Pedro.hablar ("""uff, Hola""") #Llamamos m�todo
Androide.abducir(Pedro.nombre) #Llamamos m�todo
Resultado:

Ha corrido 12 km
Pedro Rosendo
� uff, Hola
00199017 ha abducido a Pedro Rosendo usando ondas

Has visto qu� gran utilidad tienen las clases y m�todos. Seguro se te han ocurrido
miles de ideas! En fin aqu� te dejo el c�digo completo para que juegues con el!

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
class Humano(object): #Creamos la clase Humano
def __init__(self, edad, nombre): #Definimos el atributo edad
self.edad = edad # Definimos que el atributo edad, sera la edad asignada
self.nombre = nombre # Definimos que el atributo nombre, sera el nombre
asig

def hablar (self, mensaje):


print (('-'), (mensaje))

def correr (self, kilometros):


self.kilometros = kilometros
print (("""Ha corrido"""), (kilometros), ("""km"""))

class Marciano(object): #Creamos la clase Marciano


def __init__(self, siglos, serial): #Definimos el atributo siglos
self.siglos = siglos # Definimos que el atributo edad, sera la edad
asignada
self.serial = serial # Definimos que el atributo id, sera la id asignada

def abducir (self, persona):


print ((Androide.serial), ("""ha abducido a"""), (persona), ("""usando
ondas"""))

Pedro = Humano(25, "Pedro Rosendo")


Manuela = Humano(27, "Manuela Panuela")
Androide = Marciano (2, '00199017')

Pedro.correr (12) #Llamamos m�todo


print (Pedro.nombre) #Imprimimos Argumento
Pedro.hablar ("""uff, Hola""") #Llamamos m�todo
Androide.abducir(Pedro.nombre) #Llamamos m�todo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
class Humano(object): #Creamos la clase Humano
def __init__(self, edad, nombre): #Definimos el atributo edad
self.edad = edad # Definimos que el atributo edad, sera la edad asignada
self.nombre = nombre # Definimos que el atributo nombre, sera el nombre
asig

def hablar (self, mensaje):


print (('-'), (mensaje))

def correr (self, kilometros):


self.kilometros = kilometros
print (("""Ha corrido"""), (kilometros), ("""km"""))

class Marciano(object): #Creamos la clase Marciano


def __init__(self, siglos, serial): #Definimos el atributo siglos
self.siglos = siglos # Definimos que el atributo edad, sera la edad
asignada
self.serial = serial # Definimos que el atributo id, sera la id asignada

def abducir (self, persona):


print ((Androide.serial), ("""ha abducido a"""), (persona), ("""usando
ondas"""))

Pedro = Humano(25, "Pedro Rosendo")


Manuela = Humano(27, "Manuela Panuela")
Androide = Marciano (2, '00199017')
Pedro.correr (12) #Llamamos m�todo
print (Pedro.nombre) #Imprimimos Argumento
Pedro.hablar ("""uff, Hola""") #Llamamos m�todo
Androide.abducir(Pedro.nombre) #Llamamos m�todo

Ejercicio
Te dejo un ejercicio: Puedes agregar un limite al poder de abducci�n de nuestro
androide en km, y dependiendo los kil�metros que corra Pedro, ser� abducido o no!
Lo resolvemos?. Venga que para eso somos programadores semi androides! Solo debemos
agregar un condicional if / else dentro de un bucle while. Y utilizar los m�todos
y atributos para imprimir el resultado! Te dejo el c�digo completo en un spoiler:

S-ar putea să vă placă și